[BAEL-6203] Deserialize Generic Type with Jackson (#13764)
This commit is contained in:
parent
4cebc2aaf1
commit
28c8893b38
|
@ -0,0 +1,14 @@
|
|||
package com.baeldung.jackson.deserialization.jsongeneric;
|
||||
|
||||
public class JsonResponse<T> {
|
||||
|
||||
private T result;
|
||||
|
||||
public T getResult() {
|
||||
return result;
|
||||
}
|
||||
|
||||
public void setResult(T result) {
|
||||
this.result = result;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,33 @@
|
|||
package com.baeldung.jackson.deserialization.jsongeneric;
|
||||
|
||||
public class User {
|
||||
|
||||
private Long id;
|
||||
private String firstName;
|
||||
private String lastName;
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getFirstName() {
|
||||
return firstName;
|
||||
}
|
||||
|
||||
public void setFirstName(String firstName) {
|
||||
this.firstName = firstName;
|
||||
}
|
||||
|
||||
public String getLastName() {
|
||||
return lastName;
|
||||
}
|
||||
|
||||
public void setLastName(String lastName) {
|
||||
this.lastName = lastName;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
package com.baeldung.jackson.deserialization.jsongeneric;
|
||||
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.fasterxml.jackson.core.type.TypeReference;
|
||||
import com.fasterxml.jackson.databind.JavaType;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
class GenericTypeDeserializerUnitTest {
|
||||
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
|
||||
@Test
|
||||
void givenJsonObject_whenDeserializeIntoGenericTypeByTypeReference_thenCorrect() throws JsonProcessingException {
|
||||
String json = "{\"result\":{\"id\":1,\"firstName\":\"John\",\"lastName\":\"Lewis\"}}";
|
||||
|
||||
TypeReference<JsonResponse<User>> typeRef = new TypeReference<JsonResponse<User>>() {};
|
||||
JsonResponse<User> jsonResponse = objectMapper.readValue(json, typeRef);
|
||||
User user = jsonResponse.getResult();
|
||||
|
||||
assertThat(user.getId()).isEqualTo(1);
|
||||
assertThat(user.getFirstName()).isEqualTo("John");
|
||||
assertThat(user.getLastName()).isEqualTo("Lewis");
|
||||
}
|
||||
|
||||
@Test
|
||||
void givenJsonObject_whenDeserializeIntoGenericTypeByJavaType_thenCorrect() throws JsonProcessingException {
|
||||
String json = "{\"result\":{\"id\":1,\"firstName\":\"John\",\"lastName\":\"Lewis\"}}";
|
||||
|
||||
JavaType javaType = objectMapper.getTypeFactory().constructParametricType(JsonResponse.class, User.class);
|
||||
JsonResponse<User> jsonResponse = objectMapper.readValue(json, javaType);
|
||||
User user = jsonResponse.getResult();
|
||||
|
||||
assertThat(user.getId()).isEqualTo(1);
|
||||
assertThat(user.getFirstName()).isEqualTo("John");
|
||||
assertThat(user.getLastName()).isEqualTo("Lewis");
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue