【问题标题】:Create JSON object using Jackson in Java [duplicate]在Java中使用Jackson创建JSON对象[重复]
【发布时间】:2017-04-19 11:20:05
【问题描述】:

我需要使用 Jackson 创建如下 JSON 字符串。 我知道已经在这里回答了类似的问题:Creating a json object using jackson

但我预期的 JSON 字符串与上面示例中的有点不同。

如何仅使用 Jackson 在 Java 中形成以下格式化的 JSON 对象? 另外,我不喜欢创建一个单独的 POJO 来实现这一点。

预期输出:

{
    "obj1": {
        "name1": "val1",
        "name2": "val2"
    },
    "obj2": {
        "name3": "val3",
        "name4": "val4"
    },
    "obj3": {
        "name5": "val5",
        "name6": "val6"
    }
}

【问题讨论】:

  • @Yogesh_D 如果您看到我的问题和您提到的问题的输出格式,它们有点不同。在我的问题中,我需要输出完全符合上述格式。
  • 那么你想把这个 JSON 字符串转换成 java POJO 吗?
  • @arsendavtyan91 不,我需要它作为 JSON 字符串本身。
  • 输出为 Json 字符串。你的意见是什么?
  • 这个问题不是重复的。不应该被标记为重复。

标签: java json jackson


【解决方案1】:

试试这个:

ObjectMapper mapper = new ObjectMapper();
ObjectNode rootNode = mapper.createObjectNode();

ObjectNode childNode1 = mapper.createObjectNode();
childNode1.put("name1", "val1");
childNode1.put("name2", "val2");

rootNode.set("obj1", childNode1);

ObjectNode childNode2 = mapper.createObjectNode();
childNode2.put("name3", "val3");
childNode2.put("name4", "val4");

rootNode.set("obj2", childNode2);

ObjectNode childNode3 = mapper.createObjectNode();
childNode3.put("name5", "val5");
childNode3.put("name6", "val6");
    
rootNode.set("obj3", childNode3);


String jsonString = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(rootNode);
System.out.println(jsonString);

【讨论】:

  • 我试过这个,但我不断收到 ObjectNode 无法解析为类型
  • 这会将反斜杠添加到添加的字符串中。如何避免反斜杠?
  • @DeepakSelvakumar 如果您想避免使用反斜杠,请将倒数第二行中的writerWithDefaultPrettyPrinter() 替换为writer()。你可以走了!
猜你喜欢
  • 2018-07-19
  • 2013-12-21
  • 1970-01-01
  • 2021-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-27
相关资源
最近更新 更多