참조
dependency
implementation 'com.fasterxml.jackson.core:jackson-databind:2.12.3'
// LocalDateTime 파싱 이슈로 필요한 모듈 ObjectMapper 생성 시 module 불러와서 사용
// 예시) new ObjectMapper().registerModule(new JavaTimeModule());
implementation 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.13.3'
기본적인 사용 예시
Entity
public class User {
private String name;
private int age;
public User(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return this.name;
}
public int getAge() {
return this.age;
}
}
JavaObject → JSON
ObjectMapper objectMapper = new ObjectMapper();
User user = new User("Ryan", 30);
// json 파일 출력
objectMapper.writeValue(new File("user.json"), user)
{"name": "Ryan", "age": 30}
// 문자열 출력
String userAsString = objectMapper.writeValueAsString(user);
{"name":"Ryan", "age":30}
JSON → JavaObject
// String to Object
String json = "{'name':'Ryan', 'age':30}";
User user = objectMapper.readValue(json, User.class);
// Json File To Object
User user = objectMapper.readValue(new File("user.json"), User.class);
// Json URL To Object
User user = objectMapper.readValue(new URL("file:user.json"), User.class);
JSON → Jackson JsonNode
String json = "{'name':'Ryan', 'age':30}";
JsonNode jsonNode = objectMapper.readTree(json);
JSON Array String → Java List
String jsonArr = "[{'name':'Ryan', 'age':30},{'name':'Jake','age':20}]";
List<User> users = objectMapper.readValue(jsonArr, new TypeReference<>() {});
JSON String → Java Map
String jsonArr = "{'name':'Ryan','age':30}";
Map<String, Object> user = objectMapper.readValue(jsonArr, new TypeReference<>() {});
추가적인 지원 기능
Serialization/Deserialization Config
JSON에는 있지만 Mapping될 Object에는 없는 필드를 무시해야 하는 경우
String json = "{'name':'Ryan','age':30,'gender':'M'}";
ObjectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
User user = objectMapper.readValue(json, User.class);
JSON에 있는 property가 Mapping될 Object에 primitive인데 null값 전달을 무시해야 하는 경우
// 기본적으로 FAIL_ON_NULL_PRIMITIVES 옵션은 false
// true -> age가 int인 primitive 자료형이 null인 JSON이 전달되는 경우 예외 발생
String json = "{'name':'Ryan','age':null}";
User user = objectMapper.readValue(json, User.class);
Custom Serializer/Deserializer
Custom Serializer

Custom Deserializer
