Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.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 使用Jackson将复杂的JSON转换为一级POJO_Java_Json_Jackson - Fatal编程技术网

Java 使用Jackson将复杂的JSON转换为一级POJO

Java 使用Jackson将复杂的JSON转换为一级POJO,java,json,jackson,Java,Json,Jackson,让我们假设您拥有以下JSON: { "prop0": "value0", "level1" : { "prop1": "value1" "prop2": "value2" }, .... } 它可以变成简单的Java对象吗 class Pojo { private String prop0; private String prop1; private String prop2; } 我不想创建一个中间类来包装“level1” 我想到的是

让我们假设您拥有以下JSON:

{
  "prop0": "value0",
  "level1" : {
      "prop1": "value1"
      "prop2": "value2"
   },
   ....
}
它可以变成简单的Java对象吗

class Pojo {
  private String prop0;
  private String prop1;
  private String prop2;
}
我不想创建一个中间类来包装“level1”

我想到的是以这种方式绘制我的班级地图:

class Pojo {
  private String prop0;
  @JsonProperty("level1.prop1")
  private String prop1;
  @JsonProperty("level1.prop2")
  private String prop2;
}
但不幸的是,它不起作用。反问题-将复杂Java对象转换为普通JSON可以使用
@JsonUnwrapped
注释简单地解决


您能为我的问题提出任何可行的解决方案吗?

您需要编写一个自定义反序列化程序,或者添加一个可以转换结构的setter。对于后者,您可以执行以下操作

...
public void setLevel1(Map<String,String> values) { // or JsonNode
   prop1 = values.get("prop1");
   // and so forth; if names are regular, can use looping
}
。。。
public void setLevel1(映射值){//或JsonNode
prop1=values.get(“prop1”);
//等等;如果名称是规则的,可以使用循环
}

您需要编写一个自定义反序列化程序,或者添加一个可以转换结构的setter。对于后者,您可以执行以下操作

...
public void setLevel1(Map<String,String> values) { // or JsonNode
   prop1 = values.get("prop1");
   // and so forth; if names are regular, can use looping
}
。。。
public void setLevel1(映射值){//或JsonNode
prop1=values.get(“prop1”);
//等等;如果名称是规则的,可以使用循环
}

您可以使用自定义反序列化程序。JSON的根目录中还有什么?@SotiriosDelimanolis当然JSON对象更复杂。我只是简化了结构,因为它对问题不重要。对于解决方案,我想提出它。我不需要知道细节,只需要知道根目录中是否有其他键值对。@Mena Of I可以使用自定义反序列化程序,但这会使代码理解复杂化。注释更受欢迎。您可以使用自定义反序列化程序。JSON的根中还有什么?@SotiriosDelimanolis当然JSON对象更复杂。我只是简化了结构,因为它对问题不重要。对于解决方案,我想提出它。我不需要知道细节,只需要知道根目录中是否有其他键值对。@Mena Of I可以使用自定义反序列化程序,但这会使代码理解复杂化。注释更受欢迎。