将多个Json节点添加到一个使用Jackson

时间:2017-08-01 19:42:40

标签: java json jackson

我正在尝试创建类似下面的Json Structure

{
  "properties": {
    "a": {
        "b": 1,
        "c": "2",
        "d": 3,
        "e": 4
    },
    "f": {
        "g": 5,
        "h": "6",
        "i": 7,
        "j": 8
    }
  }
}

但我不能。

我写了以下代码

for(Annotation a : annotationList) {
    ObjectNode objectNode1 = readAnnotation(a);
    String name= getName(key);
    objectNode.putPOJO(name, objectNode1);
    propertiesObjectNode.put("properties", objectNode1);
}

创建一个JSON,但最终我只在属性中有一个节点。

我跟随Json

{
  "properties" : {
    "f" : {
      "g" : 5,
      "h" : "6",
      "i" : 7,
      "j" : 8
    }
  }
}

2 个答案:

答案 0 :(得分:0)

propertiesObjectNode.put("properties", objectNode1);

这一行在for循环中,因此每次迭代都会覆盖它。最后,您只剩下1个节点,这是上一次迭代的结果。

答案 1 :(得分:0)

也许我不在这里,但如果您使用的是Jackson,为什么不使用ObjectMapper类。它会将POJO转换为JSON。

ObjectMapper mapper = new ObjectMapper();
MyPojo pojo = new MyPojo();

String json = mapper.writeValueAsString(pojo);

如果您想设置类似的东西,杰克逊可以拍摄地图并输出json版本。

你会有类似的东西:

Map<String, Object> a = new HashMap<String, Object>();
a.put("b", 1);
a.put("c", "2");

Map<String, Object> f = new HashMap<String, Object>();
f.put("g", 5);
f.put("h", "6");

Map<String, Object> propWrapper = new HashMap<String, Object>();
propWrapper.put("a", a)
propWrapper.put("f", f)

Map<String, Object> props = new HashMap<String, Object>();
props.put("properties", props);

ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(props);

这应该输出你正在寻找的结构。最好使用自己的POJO来获得更具意义的完整结构,但这应该提供一个想法。