Jackson - Marshall String zu JsonNode

1. Übersicht

Dieses kurze Tutorial zeigt, wie Sie mit Jackson 2 einen JSON-String in einen JsonNode ( com.fasterxml.jackson.databind.JsonNode ) konvertieren .

Wenn Sie tiefer graben und andere coole Dinge lernen möchten, die Sie mit dem Jackson 2 tun können, besuchen Sie das Haupt-Tutorial von Jackson.

2. Schnelles Parsen

Ganz einfach, um den JSON-String zu analysieren, benötigen wir nur einen 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. Low Level Parsing

Wenn Sie aus irgendeinem Grund eine niedrigere Ebene wählen müssen , zeigt das folgende Beispiel den JsonParser, der für das eigentliche Parsen des Strings verantwortlich ist:

@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. Verwenden des JsonNode

Nachdem der JSON in ein JsonNode-Objekt analysiert wurde, können wir mit dem Jackson JSON- Baummodell arbeiten :

@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. Schlussfolgerung

In diesem Artikel wurde veranschaulicht, wie JSON-Zeichenfolgen in das Jackson JsonNode- Modell analysiert werden , um eine strukturierte Verarbeitung des JSON-Objekts zu ermöglichen.

Die Implementierung all dieser Beispiele und Codefragmente finden Sie in meinem Github-Projekt - dies ist ein Eclipse-basiertes Projekt, daher sollte es einfach zu importieren und auszuführen sein, wie es ist.