본문으로 바로가기

java jackson을 json string다루기

category Language/JAVA 2018.06.11 17:38


1.JsonNode로 만들기

1
2
3
4
String rawJson = new String(byteBuffer.array(), "UTF-8");
ObjectMapper objectMapper = new ObjectMapper();
 
JsonNode node = objectMapper.readTree(rawJson);
cs

ObjectMapper의 .readTree()를 사용한다.


2.java jackson을 이용해 json을 pojo로 바꾸기 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.plutusds.voting.server.domains.UserInfoResponse;
 
import java.io.IOException;
 
public class UserInfoResponseMaker {
    public UserInfoResponse make(String userResponseString) throws IOException {
 
        String jsonString = new String(userResponseString);
 
        ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.configure(JsonParser.Feature.ALLOW_SINGLE_QUOTES, true);
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
        UserInfoResponse UserInfoResponse = objectMapper.readValue(jsonString, UserInfoResponse.class);
 
        return UserInfoResponse;
 
    }
}
cs


자바에서 json을 pojo로 매핑 할 때 씀


ObjectMapper를 이용한다.


1
2
3
4
5
6
7
8
9
10
11
12
@Data
public class UserInfoResponse {
    private String owner;
 
    @JsonProperty("total_votes")
    private double totalVotes;
 
    @JsonProperty("producer_key")
    private String producerKey;
 
    private String url;
}
cs


UserInfoResponse.class로 매핑을 해주고 싶을 때 json형태에 맞게 Pojo를 구성을 해준다.


그런데 필드명으로 매핑을 하는데 내가 지정을 해주고 싶다면 @JsonProperty를 사용해서 대상 이름 "total_votes"를 totalVotes로 바꿔줄 수 있다.


자바는 기본적으로 카멜케이스를 쓰기 때문에 바꿔주고 싶을 때가 있을때 주로 쓴다.




댓글을 달아 주세요