2017-10-06 61 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