Перейти к основному содержимому

Джексон — Маршалл String в JsonNode

· 2 мин. чтения

1. Обзор

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

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

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 в модели Jackson JsonNode, чтобы включить структурированную обработку объекта JSON.

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