2

嗨,我有一个如下的 Json:

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

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

最后,我的输出如下:

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

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

你能帮我追加一个新的空 JSON 对象吗?

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

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

杰森:

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

我需要这样的东西:

"skills" : {
  "mainSkills" {
     "skillSet" : [ 
       {
        "Skill" : "Management"
       },
       {
        "Skill" : "IT"
       }, 
     ]
   }
}

我已经完成了 camelCase 的转换,但我需要插入新对象“mainSkills”。

4

1 回答 1

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 方法

于 2017-08-16T12:37:30.163 回答