카테고리 없음

[자바] GSON : JSON을 무시하고 객체로 변환

필살기쓰세요 2021. 1. 25. 04:23

ObjectMapperJackson lib에서 구성하고 사용하십시오 .

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
            <version>2.8.3</version>
            </dependency>
            

매퍼는 다음과 같이 정의되어야합니다.

ObjectMapper mapper = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);

전체 데모 예제를 참조하십시오.

public class Demo {

    public static void main(String[] args) throws IOException {
    
            String jsonData = "{" +
                            "    \"data\": {" +
                                            "    }" +
                                                            "}";
                                                                    String jsonMessage = "{" +
                                                                                    "    \"message\": {" +
                                                                                                    "    }" +
                                                                                                                    "}";
                                                                                                                    
                                                                                                                            ObjectMapper mapper = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
                                                                                                                            
                                                                                                                                    Model modelData = mapper.readValue(jsonData, Model.class);
                                                                                                                                            Model modelMessage = mapper.readValue(jsonMessage, Model.class);
                                                                                                                                            
                                                                                                                                            
                                                                                                                                                    System.out.println(modelData);
                                                                                                                                                            System.out.println(modelMessage);
                                                                                                                                                            
                                                                                                                                                            
                                                                                                                                                                }
                                                                                                                                                                }
                                                                                                                                                                
                                                                                                                                                                
                                                                                                                                                                class Model {
                                                                                                                                                                
                                                                                                                                                                    private Data data;
                                                                                                                                                                        private Message message;
                                                                                                                                                                        
                                                                                                                                                                            @Override
                                                                                                                                                                                public String toString() {
                                                                                                                                                                                        return "Model{" +
                                                                                                                                                                                                        "data=" + data +
                                                                                                                                                                                                                        ", message=" + message +
                                                                                                                                                                                                                                        '}';
                                                                                                                                                                                                                                            }
                                                                                                                                                                                                                                            
                                                                                                                                                                                                                                                public Data getData() {
                                                                                                                                                                                                                                                        return data;
                                                                                                                                                                                                                                                            }
                                                                                                                                                                                                                                                            
                                                                                                                                                                                                                                                                public void setData(Data data) {
                                                                                                                                                                                                                                                                        this.data = data;
                                                                                                                                                                                                                                                                            }
                                                                                                                                                                                                                                                                            
                                                                                                                                                                                                                                                                                public Message getMessage() {
                                                                                                                                                                                                                                                                                        return message;
                                                                                                                                                                                                                                                                                            }
                                                                                                                                                                                                                                                                                            
                                                                                                                                                                                                                                                                                                public void setMessage(Message message) {
                                                                                                                                                                                                                                                                                                        this.message = message;
                                                                                                                                                                                                                                                                                                            }
                                                                                                                                                                                                                                                                                                            
                                                                                                                                                                                                                                                                                                                private static class Data {}
                                                                                                                                                                                                                                                                                                                    private static class Message {}
                                                                                                                                                                                                                                                                                                                    }
                                                                                                                                                                                                                                                                                                                    

BTW, ObjectMapper는 Thread Safe이므로 Json을 읽을 때마다 생성하지 않도록 하나의 상수를 정의 할 수 있습니다.

더 많은 정보는 여기에서 찾을 수 있습니다 : http://fasterxml.github.io/jackson-databind/javadoc/2.8/com/fasterxml/jackson/databind/ObjectMapper.html



출처
https://stackoverflow.com/questions/39917225