代码之家  ›  专栏  ›  技术社区  ›  Pavan

在这种情况下如何使用Jackson软件包?

  •  2
  • Pavan  · 技术社区  · 7 年前

    您好,我有一个Json,如下所示:

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

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

    最后,我的输出如下:

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

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

    所需输出应如下所示:

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

    Json:

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

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

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

    1 回复  |  直到 7 年前
        1
  •  1
  •   cassiomolin    7 年前

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

    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