Jackson - Marshall String à JsonNode

1. Vue d'ensemble

Ce tutoriel rapide montrera comment utiliser Jackson 2 pour convertir une chaîne JSON en JsonNode ( com.fasterxml.jackson.databind.JsonNode ).

Si vous voulez creuser plus profondément et apprendre d' autres choses intéressantes que vous pouvez faire avec le Jackson 2 , dirigez-vous vers le didacticiel principal de Jackson.

2. Analyse rapide

Très simplement, pour analyser la chaîne JSON, nous n'avons besoin que d'un ObjectMapper :

@Test public void whenParsingJsonStringIntoJsonNode_thenCorrect() throws JsonParseException, IOException { String jsonString = "{"k1":"v1","k2":"v2"}"; ObjectMapper mapper = new ObjectMapper(); JsonNode actualObj = mapper.readTree(jsonString); assertNotNull(actualObj); }

3. Analyse de bas niveau

Si, pour une raison quelconque, vous devez aller à un niveau inférieur à cela, l'exemple suivant expose le JsonParser responsable de l'analyse réelle de la chaîne:

@Test public void givenUsingLowLevelApi_whenParsingJsonStringIntoJsonNode_thenCorrect() throws JsonParseException, IOException { String jsonString = "{"k1":"v1","k2":"v2"}"; ObjectMapper mapper = new ObjectMapper(); JsonFactory factory = mapper.getFactory(); JsonParser parser = factory.createParser(jsonString); JsonNode actualObj = mapper.readTree(parser); assertNotNull(actualObj); }

4. Utilisation de JsonNode

Une fois le JSON analysé en un objet JsonNode, nous pouvons travailler avec le modèle d'arbre JSON de Jackson :

@Test public void givenTheJsonNode_whenRetrievingDataFromId_thenCorrect() throws JsonParseException, IOException { String jsonString = "{"k1":"v1","k2":"v2"}"; ObjectMapper mapper = new ObjectMapper(); JsonNode actualObj = mapper.readTree(jsonString); // When JsonNode jsonNode1 = actualObj.get("k1"); assertThat(jsonNode1.textValue(), equalTo("v1")); }

5. Conclusion

Cet article a illustré comment analyser les chaînes JSON dans le modèle Jackson JsonNode pour activer un traitement structuré de l'objet JSON.

L'implémentation de tous ces exemples et extraits de code peut être trouvée dans mon projet github - il s'agit d'un projet basé sur Eclipse, il devrait donc être facile à importer et à exécuter tel quel.