매퍼
object → object
매퍼 라이브러리
- ObjectMapper
- ModelMapper
- MapStruct
Object Mapper
- JSON 컨텐츠를 Java 객체로 deserialization 하거나 Java 객체를 JSON으로 serialization 할 때 사용하는 Jackson 라이브러리의 클래스이다.
- ObjectMapper는 생성 비용이 비싸기 때문에 bean/static으로 처리하는 것이 좋다.
ObjectMapper객체를 다음과 같이 생성한다.
ObjectMapper objectMapper = new ObjectMapper();
직렬화를 하기 위해서는 getter가 필요하다.
역직렬화를 하기 위해서는 생성자가 필요하다.
class User{
private String name;
private String email;
public User(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public String getEmail() {
return email;
}
}
Java Object → JSON (직렬화)
Object to JSON File
objectMapper.writeValue(new File("user.json"), user);
Object to JSON String
String userAsString = objectMapper.writeValueAsString(user);
{"name":"김가나","email":"test@example.com"}
JSON → Java Object (역직렬화)
역직렬화 시킬 클래스에 JSON을 파싱한 결과를 전달할 생성자가 있어야 한다.
String json = "{ \"name\" : \"김가나\", \"email\" : \"test@example.com\" }";
User user = objectMapper.readValue(json, User.class);
JSON File to Object
User user = objectMapper.readValue(new File("user.json"), User.class);
JSON Array String to Java List
String jsonArr = "[{\"name\":\"Ryan\",\"age\":30},{\"name\":\"Jake\",\"age\":20}]";
List<User> users = objectMapper.readValue(jsonArr, new TypeReference<>() {});
JSON String to Java Map
String jsonArr = "{\"name\":\"Ryan\",\"age\":30}";
Map<String, Object> user = objectMapper.readValue(jsonArr, new TypeReference<>() {
});
Config
Jackson Library의 Basic Features에 추가적으로 유용한 기능를 사용할 수 있습니다.
JSON과 Object에 대해서 커스터마이징한 Serialize/Deserialize가 가능한 기능을 사용할 수 있습니다.
'Languages > Java' 카테고리의 다른 글
WeakHashMap과 약한 참조 (0) | 2023.08.31 |
---|---|
예외처리 (0) | 2023.05.24 |
Primitive Type, Reference Type (0) | 2023.04.25 |
JVM과 GC (0) | 2023.04.12 |
[Java] HashMap, HashTable, HashSet (0) | 2023.04.12 |