如何在这种情况下使用Jackson Package?

时间:2017-08-16 09:25:51

标签: java json jackson jackson2

嗨,我有一个Json,如下:

Bill

现在我的要求是将A,B,C转换为camelCase表示法(根据需要),我使用@JsonProperty以及相应POJO类的getter和setter方法。

最后,我的输出如下:

A {
    B {
        C [{
            x1:x2,
            y1:y2
          }]
       }
  }   

现在我想在b和c之间添加一个新的空对象,如d。

请你帮我添加一个新的空JSON对象。

所需的输出应该是这样的:

a {
    b {
        c [{
            x1:x2,
            y1:y2
          }]
       }
  }   
杰森:

a {
    b {
       d {
          c [{
            x1:x2,
            y1:y2
          }]
       }
     }
  }

我需要这样的东西:

"Skills" : {
  "SkillSet" : [ 
    {
        "Skill" : "Management"
    },
    {
        "Skill" : "IT"
    }, 
  ]
}

我完成了转换camelCase但我需要插入新对象" mainSkills"。

1 个答案:

答案 0 :(得分:1)

以下内容将为您提供预期的输出:

String json = "{\n" +
              "  \"skills\": {\n" +
              "    \"skillSet\": [\n" +
              "      {\n" +
              "        \"skill\": \"Management\"\n" +
              "      },\n" +
              "      {\n" +
              "        \"skill\": \"IT\"\n" +
              "      }\n" +
              "    ]\n" +
              "  }\n" +
              "}";

// Create ObjectMapper instance to parse the JSON
ObjectMapper mapper = new ObjectMapper();

// Parse the JSON into the Jackson tree model
JsonNode tree = mapper.readTree(json);

// Store a reference to the "skills" node
JsonNode skills = tree.get("skills");

// Store a reference to the "skillsSet" node
JsonNode skillSet = skills.get("skillSet");

// Remove the "skillsSet" node from the tree
((ObjectNode) skills).remove("skillSet");

// Create the "skillSet" node under "mainSkills" 
// and sets it under the "skills" node
((ObjectNode) skills).set("mainSkills", 
        mapper.createObjectNode().set("skillSet", skillSet));

// Write the tree as a JSON string using the default pretty printer
String newJson = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(tree);

如果您不想操纵上面演示的JSON,请按照JB Nizet approach