Jackson - Marshall String naar JsonNode
1. Overzicht
Deze korte tutorial laat zien hoe gebruik Jackson 2 om een JSON-string naar een JsonNode (com.fasterxml.jackson.databind.JsonNode).
Als je dieper wilt graven en leren andere coole dingen die je kunt doen met de Jackson 2 - ga naar de belangrijkste Jackson-tutorial.
2. Snel parseren
Heel eenvoudig, om de JSON-string te ontleden hebben we alleen een ObjectMapper:
@Test openbare leegte whenParsingJsonStringIntoJsonNode_thenCorrect () gooit JsonParseException, IOException {String jsonString = "{" k1 ":" v1 "," k2 ":" v2 "}"; ObjectMapper-mapper = nieuwe ObjectMapper (); JsonNode actualObj = mapper.readTree (jsonString); assertNotNull (actualObj); }
3. Parseren op laag niveau
Als u om de een of andere reden moet naar een lager niveau gaan dan dat, het volgende voorbeeld toont de JsonParser verantwoordelijk voor het daadwerkelijke ontleden van de String:
@Test openbare leegte gegevenUsingLowLevelApi_whenParsingJsonStringIntoJsonNode_thenCorrect () gooit JsonParseException, IOException {String jsonString = "{" k1 ":" v1 "," k2 ":" v2 "}"; ObjectMapper-mapper = nieuwe ObjectMapper (); JsonFactory factory = mapper.getFactory (); JsonParser-parser = factory.createParser (jsonString); JsonNode actualObj = mapper.readTree (parser); assertNotNull (actualObj); }
4. Gebruik de JsonNode
Nadat de JSON is geparseerd in een JsonNode-object, kunnen we werken met het Jackson JSON Tree Model:
@Test openbare ongeldig gegevenTheJsonNode_whenRetrievingDataFromId_thenCorrect () gooit JsonParseException, IOException {String jsonString = "{" k1 ":" v1 "," k2 ":" v2 "}"; ObjectMapper-mapper = nieuwe ObjectMapper (); JsonNode actualObj = mapper.readTree (jsonString); // When JsonNode jsonNode1 = actualObj.get ("k1"); assertThat (jsonNode1.textValue (), equalTo ("v1")); }
5. Conclusie
Dit artikel is geïllustreerd hoe JSON Strings in de Jackson JsonNode model- om een gestructureerde verwerking van het JSON-object mogelijk te maken.
De implementatie van al deze voorbeelden en codefragmenten is te vinden in mijn github-project - dit is een op Eclipse gebaseerd project, dus het zou gemakkelijk moeten kunnen worden geïmporteerd en uitgevoerd zoals het is.