Автор оригинала: Eugen Paraschiv.
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 в Jackson JsonNode model , чтобы включить структурированную обработку объекта JSON.
Реализацию всех этих примеров и фрагментов кода можно найти в моем проекте github – это проект на основе Eclipse, поэтому его должно быть легко импортировать и запускать как есть.