Jackson - Marshall String zu JsonNode

Jackson - Marshall String zu JsonNode

1. Überblick

Dieses kurze Tutorial zeigt, wie manuse Jackson 2 to convert a JSON String to a JsonNode (com.fasterxml.jackson.databind.JsonNode) macht.

Wenn Sie tiefer graben undother cool things you can do with the Jackson 2 lernen möchten, gehen Sie zuthe main Jackson tutorial.

2. Schnelles Parsen

Ganz einfach, um den JSON-String zu analysieren, benötigen wir nur einObjectMapper:

@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 Grundneed to go lower level als das haben, zeigt das folgende Beispiel dieJsonParser, die für das eigentliche Parsen des Strings verantwortlich sind:

@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 SieJsonNode

Nachdem der JSON in ein JsonNode-Objekt analysiert wurde, können wirwork with the Jackson JSON Tree Model:

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

Dieser Artikel illustriertehow to parse JSON Strings into the Jackson JsonNode model, um eine strukturierte Verarbeitung des JSON-Objekts zu ermöglichen.

Die Implementierung all dieser Beispiele und Codefragmentecan be found in my github project - dies ist ein Eclipse-basiertes Projekt, daher sollte es einfach zu importieren und auszuführen sein, wie es ist.