2016-08-30 190 views
0

我有一个JSON像 -的Json反序列化 - 映射嵌套对象键直接

{ 
"type" : "employee", 
"details" : { 
    "name" : "ABC", 
    "age" : 12, 
    "sex" : "male" 
    } 
} 

和一个Java类像 -

public class Person { 
String name; 
String sex; 
String type; 
int age; 
----getters and setters 
} 

我想知道有没有办法直接映射details对象的属性与details.namePerson.name之类的人员类别的属性。 我知道这可以通过自定义的反序列化器来实现,但我希望避免它。可能是GSON或Jackson提供的一些注释。

+0

我不认为你将能够做到这一点没有一个自定义的解串器。这可以通过@JsonWrapped注释完成。但是这个问题已经在jackson讨论过但尚未实现,对GSON不了解。 – Franjavi

回答

-1

您可以使用@JsonProperties映射

+0

你能分享一些例子吗? –

0

有解决这几个方面,但我会做的是创建下面的类:

public class PersonWrapper { 

    private String type; 

    @JsonProperty("details") 
    private Person person; 

} 

编辑:

如果您不想添加包装类,您可以尝试将@JsonRootName(value = "details")添加到您的Person类中。

+0

这是我想要避免的。我明白这会起作用。但意图在这里在给定的班级结构内工作 –

+0

我刚刚编辑了我的答案。我从来没有使用过这个注释,但是在阅读完文档之后,它似乎会做你想做的事情。您可能还需要一些配置更改。请参阅http://stackoverflow.com/questions/11704255/jackson-json-deserialization-with-root-element – Adam