2017-08-16 2 views
2

Salut je suis un JSON comme suit:Comment utiliser Jackson Package dans ce scénario?

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

Maintenant, mon exigence est de convertir les A, B, C à la notation camelCase (selon les besoins) que je l'ai fait en utilisant @JsonProperty et méthodes getter et setter pour la classe POJO respective.

Enfin, ma sortie est la suivante:

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

Maintenant, je veux ajouter un nouvel objet vide comme d entre b et c.

Pouvez-vous s'il vous plaît m'aider en ajoutant un nouvel objet JSON vide.

La sortie requise doit être quelque chose comme ceci:

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

Json:

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

je besoin de quelque chose comme ceci:

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

je suis fait avec la conversion du camelCase mais j'ai besoin d'insérer le nouvel objet "mainSkills".

+1

Pouvez-vous publier un ** JSON ** valide? –

+0

@ CássioMazzochiMolin Mise à jour du JSON. – Pavan

+0

Toujours pas un JSON valide cependant. –

Répondre

1

Ce qui suit vous donnera le résultat attendu:

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); 

Si vous ne voulez pas manipuler le JSON comme démontré ci-dessus, suivez les JB Nizet approach.

+0

Merci beaucoup. Il fonctionne comme prévu ... Tout ce que j'ai besoin d'apprendre sur le code que vous avez fait étape par étape. – Pavan

+0

@Pavan J'ai ajouté des commentaires à mon code pour le rendre clair. –