본문 바로가기

Java/공부공부

[Java] ObjectMapper (1) 주요 메서드

 

* ObjectMapper 

Jackson 라이브러리에서 제공하는 클래스로
JSON 데이터와 Java 객체 간의 직렬화 및 역직렬화에 사용. ( Java 객체 ↔ JSON )

 

ex) User 클래스

public class User {
    private String name;
    private int age;

    // 생성자와 getter/setter 필수
    public User() {}
    public User(String name, int age) {
        this.name = name;
        this.age = age;
    }
    public String getName() { return name; }
    public int getAge() { return age; }
    public void setName(String name) { this.name = name; }
    public void setAge(int age) { this.age = age; }
}

 

ex) UserDTO

public class UserDTO {
    private String name;

    public UserDTO() {}
    public String getName() { return name; }
    public void setName(String name) { this.name = name; }
}

 

ex) user, objectMapper 인스턴스

User user = new User("phyho", 10);

ObjectMapper objectMapper = new ObjectMapper();

 


 

Java 객체 --> JSON 문자열
writeValueAsString( Object )

String jsonString = objectMapper.writeValueAsString(user);

System.out.println(jsonString); 
// {"name":"phyho","age":10}

 

출력결과 - writerWithDefaultPrettyPrinter()

더보기

 

objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(user)

{
  "name" : "phyho",
  "age" : 10
}

 

 

JSON 문자열 --> Java 객체
readValue( String/File, Class )

User user = mapper.readValue(jsonString, User.class);
// String jsonString = {"name":"phyho","age":10}

System.out.println(user.getName() + & + user.getAge()); 
// phyho & 10

 


 

* JsonNode 
JSON 데이터를 트리 구조로 표현.

  • get(String fieldName) : 지정된 필드 이름의 값을 반환
  • asText(), asInt(), asBoolean(), asDouble() : 노드의 값을 해당 타입으로 반환
  • put(String fieldName, String value) : JSON 객체의 필드를 업데이트

 

JSON 문자열-->JsonNode
readTree( String )

JsonNode jsonNode = mapper.readTree(jsonString);
// String jsonString = {"name":"phyho","age":10}

System.out.println(jsonNode.get("name").asText()); 
// phyho
System.out.println(jsonNode.toString()); 
// {"name":"phyho","age":10}

 

출력결과 - toPrettyString()

더보기

  

jsonNode.toPrettyString();

{
  "name" : "phyho",
  "age" : 10
}

 

 

 

JsonNode --> Java 객체  
treeToValue(JsonNode, Class)

User user = mapper.treeToValue(node, User.class);

System.out.println(user.getName());
// phyho

 

Java 객체 --> JsonNode
valueToTree( Object )

JsonNode jsonNode = mapper.valueToTree(user);

System.out.println(jsonNode.toPrettyString());

 


 

객체 변환 (Java 객체 --> DTO 객체)
convertValue( Object, Class )

UserDTO dto = mapper.convertValue(user, UserDTO.class);

System.out.println(dto.getName());
// phyho

 


 

https://velog.io/@thisyoon97/ObjectMapper

 

ObjectMapper에 대해 알아보자

Jackson 라이브러리의 ObjectMapper란, Java 객체를 JSON으로 또는 반대로 JSON을 Java 객체로 역직렬화하는 도구이다. (주로 JSON에 대해 사용되지만 추가 모듈을 설치하면 XML, CSV 등 다른 데이터 형식도 처

velog.io