2017-10-06 62 views
1

請參考下面的例子。從一組json屬性創建對象jackson

public class Human { 
    private String name; 
    private int age; 
} 

public class Teacher { 
    private String school; 
    private Human human; 
} 

和JSON的樣子:

{ 
    "school": "My School", 
    "age": 20, 
    "name": "My Name" 
} 

我想從具有人類作爲內部對象,但應該匹配JSON性能的同級別JSON字符串創建教師。

我正在使用Jackson API從JSON創建Java對象。

回答

-1

{ "school": "school name here", "human": { "name": "Groot", "age": 99 } }

這將是JSON字符串的格式爲教師對象

對於與JSON到Java對象的轉換,反之亦然更多信息。參考這個鏈接。 http://www.baeldung.com/jackson-object-mapper-tutorial
https://www.mkyong.com/java/how-to-convert-java-object-to-from-json-jackson/

+0

這是一個答案?如果這是一個答案,你能解釋一下你的答案嗎? –

+1

對不起,我只是一個新手。 :) 剛纔更新了它 –

2

可以標記人字段@JsonUnwrapped

public class Teacher { 
    private String school; 
    @JsonUnwrapped 
    private Human human; 
    // constructor/setters 
} 

public class Human { 
    private String name; 
    private int age; 
    // constructor/setters 
} 

public class Test { 
    String str = "{ \"school\": \"My School\", \"age\": 20, \"name\": \"My Name\" }"; 
    System.out.println(new ObjectMapper().readValue(str, Teacher.class)); 
} 

這將反序列化到你要找的格式。

+0

不錯!與文檔中描述的情景非常類似https://fasterxml.github.io/jackson-annotations/javadoc/2.0.0/com/fasterxml/jackson/annotation/JsonUnwrapped.html – flakes