Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Json反序列化-将嵌套对象键直接映射到类_Java_Json_Jackson_Gson - Fatal编程技术网

Java Json反序列化-将嵌套对象键直接映射到类

Java Json反序列化-将嵌套对象键直接映射到类,java,json,jackson,gson,Java,Json,Jackson,Gson,我有一个类似- { "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对象的属性映射到person类

我有一个类似-

{
"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
对象的属性映射到person类,比如
details.name
person.name

我知道这可以通过自定义反序列化程序实现,但我希望避免它。可能是GSON或Jackson提供的一些注释。

您可以使用@JsonProperties进行映射

有几种方法可以解决这个问题,但我要做的是创建以下类:

public class PersonWrapper {

   private String type;

   @JsonProperty("details")
   private Person person;

 }
编辑:


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

您可以分享一些示例吗?这是我试图避免的。我知道这会管用的。但是为了在给定的类结构中工作,我刚刚编辑了我的答案。我以前从未使用过该注释,但在阅读文档后,它似乎可以满足您的需求。您可能还需要一些配置更改。看,如果没有自定义反序列化程序,我认为您将无法做到这一点。这可以通过@JsonWrapped注释完成。但这是杰克逊已经讨论过但尚未实施的事情,对GSON一无所知。