«1. Обзор

В этом кратком руководстве показано, как использовать Jackson 2 для преобразования строки JSON в JsonNode (com.fasterxml.jackson.databind.JsonNode).

Если вы хотите копнуть глубже и узнать о других интересных вещах, которые вы можете делать с Jackson 2, — переходите к основному учебнику по Джексону.

2. Быстрый анализ

Очень просто, для анализа строки JSON нам нужен только 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. Анализ низкого уровня

Если по какой-то причине вам нужно перейти на более низкий уровень кроме того, в следующем примере представлен JsonParser, ответственный за фактический анализ строки:

@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. Использование JsonNode

После того, как JSON будет проанализирован в объект JsonNode, мы можем работать с деревом JSON Джексона. Модель:

@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. Заключение

В этой статье показано, как анализировать строки JSON в модели JsonNode Джексона, чтобы включить структурированную обработку объекта JSON.

Реализацию всех этих примеров и фрагментов кода можно найти в моем проекте на github — это проект на основе Eclipse, поэтому его легко импортировать и запускать как есть.