본문 바로가기
개발 언어/Java

[Java] String, JsonNode 상호 변환하기

by 정권이 내 2022. 4. 26.

[Java] String <=> JsonNode 변환 하기

 

ObjectMapper 클래스의 readTree, readValue 메서드를 사용하여 String 을 JsonNode 혹은 클래스타입으로 변경

하고 JsonNode, 클래스를 String으로 변환하는 방법에 대해 설명해보겠습니다.

 

1. String => JsonNode

 

1.1 String => Json (readTree)

ObjectMapper 클래스의 readTree 메서드는 문자열을 JsonNode 타입으로 반환합니다.

@Test
void jsonTest() {
    String jsonStr = "{\"name\":\"ksr930\",\"age\":29,\"address\":\"seoul\"}";

    try {
        JsonNode jsonNode = new ObjectMapper().readTree(jsonStr);
        System.out.println(jsonNode);
    } catch (JsonProcessingException e) {
        e.printStackTrace();
    }
}
{"name":"ksr930","age":29,"address":"seoul"}

 

1.2 String => Json (readValue)

ObjectMapper 클래스의 readValue는 반환받을 클래스를 지정하는 방식입니다.

@Getter
@Setter
static class UserInfo {
    private String name;
    private int age;
    private String address;
}

@Test
void jsonTest() {
    String jsonStr = "{\"name\":\"ksr930\",\"age\":29,\"address\":\"seoul\"}";

    try {
        UserInfo userInfo = new ObjectMapper().readValue(jsonStr, UserInfo.class);
        System.out.println(userInfo);
    } catch (Exception e) {
        e.printStackTrace();
    }
}
{"name":"ksr930","age":29,"address":"seoul"}

 

2. JsonNode => String

JsonNode 타입을 문자열로 변환할때는 ObjectMapper 클래스의 writeValueAsString 메서드를 사용합니다.

@Test
void jsonTest() {
    String jsonStr = "{\"name\":\"ksr930\",\"age\":29,\"address\":\"seoul\"}";

    try {
        // JsonNode 객체 생성
        JsonNode jsonNode = new ObjectMapper().readTree(jsonStr);
        
        // ObjectMapper().writeValueAsString 메서드 호출
        String jsonToStr = new ObjectMapper().writeValueAsString(jsonNode);

        System.out.println(jsonToStr);
    } catch (Exception e) {
        e.printStackTrace();
    }
}
{"name":"ksr930","age":29,"address":"seoul"}

 

반응형

댓글