gpt4 book ai didi

java - 包装结构的JSON与扁平化结构的pojo之间的转换

转载 作者:搜寻专家 更新时间:2023-11-01 03:39:38 26 4
gpt4 key购买 nike

我有一个 JSON 结构,其中包含我的 POJO 中没有的包装级别。像这样:

JSON:

{
"category1": {
"cat1Prop1": "c1p1",
"cat1Prop2": "c1p2",
"cat1Prop3": "c1p3"
},
"category2": {
"cat2Prop1": "c2p1",
"cat2Prop2": "c2p2"
},
"category3": {
"cat3Prop1": "c3p1",
"cat3Prop2": "c3p2",
"cat3Prop3": "c3p3"
},
"category4": {
"cat4Prop1": "c4p1"
}
}

POJO:

public class MyPojo {

private String cat1Prop1;
private String cat1Prop2;
private String cat1Prop3;

private String cat2Prop1;
private String cat2Prop2;

private String cat3Prop1;
private String cat3Prop2;
private String cat3Prop3;

private String cat4Prop1;


// Getters / setters, etc...
}

如您所见,JSON 具有“类别”级别(由于各种原因我不想在我的 Pojo 中包含)。

我正在寻找一种使用 Jackson 进行序列化/反序列化的方法,以顺利处理此问题。

我知道 Jackson 有一个 @JsonUnwrapped那种处理相反的注解。我还知道有一个 "@JsonWrapped" 的功能请求我认为可以解决我的问题的注释。

感谢您对此提供的任何意见或帮助,因为我已经四处寻找了很多。此外,关于如何使用任何其他库(如 gson、flexjson 等)完成此操作的任何建议也很有趣。

最佳答案

你可以试试这个算法:

  1. 将 JSON 读取为 Map
  2. 展平 map
  3. 使用 ObjectMapper 将 Map 转换为 POJO。

实现看起来像这样:

ObjectMapper mapper = new ObjectMapper();

Map<String, Map<String, String>> map = mapper.readValue(new File("X:/test.json"), Map.class);
Map<String, String> result = new HashMap<String, String>();
for (Entry<String, Map<String, String>> entry : map.entrySet()) {
result.putAll(entry.getValue());
}

System.out.println(mapper.convertValue(result, MyPojo.class));

关于java - 包装结构的JSON与扁平化结构的pojo之间的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17670852/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com