Модель дерева подготавливает представление дерева JSON в памяти. ObjectMapper построить дерево узлов JsonNode. Это самый гибкий подход. Это аналог парсера DOM для XML.
Создать дерево из JSON
ObjectMapper предоставляет указатель на корневой узел дерева после чтения JSON. Корневой узел может использоваться для обхода всего дерева. Рассмотрим следующий фрагмент кода, чтобы получить корневой узел предоставленной строки JSON.
//Create an ObjectMapper instance ObjectMapper mapper = new ObjectMapper(); String jsonString = "{\"name\":\"Mahesh Kumar\", \"age\":21,\"verified\":false,\"marks\": [100,90,85]}"; //create tree from JSON JsonNode rootNode = mapper.readTree(jsonString);
Модель дерева обхода
Получите каждый узел, используя относительный путь к корневому узлу при обходе дерева и обработайте данные. Рассмотрим следующий фрагмент кода, проходящий по дереву при условии корневого узла.
JsonNode nameNode = rootNode.path("name"); System.out.println("Name: "+ nameNode.textValue()); JsonNode marksNode = rootNode.path("marks"); Iterator<JsonNode> iterator = marksNode.elements();
пример
Создайте файл Java-класса с именем JacksonTester в C: \> Jackson_WORKSPACE .
Файл: JacksonTester.java
импорт java.io.IOException; импорт java.util.Iterator; import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; открытый класс JacksonTester { public static void main (String args []) { пытаться { ObjectMapper mapper = new ObjectMapper (); String jsonString = "{\" name \ ": \" Махеш Кумар \ ", \" age \ ": 21, \" Verified \ ": false, \" marks \ ": [100,90,85]}"; JsonNode rootNode = mapper.readTree (jsonString); JsonNode nameNode = rootNode.path ("имя"); System.out.println ("Имя:" + nameNode.textValue ()); JsonNode ageNode = rootNode.path ("age"); System.out.println ("Age:" + ageNode.intValue ()); JsonNode verifyNode = rootNode.path («подтверждено»); System.out.println ("Проверено:" + (verifyNode.booleanValue ()? "Да": "Нет")); JsonNode marksNode = rootNode.path ("marks"); Iterator <JsonNode> iterator = marksNode.elements (); System.out.print ("Метки: ["); while (iterator.hasNext ()) { JsonNode marks = iterator.next (); System.out.print (marks.intValue () + ""); } System.out.println ( "]"); } catch (JsonParseException e) {e.printStackTrace (); } catch (JsonMappingException e) {e.printStackTrace (); } catch (IOException e) {e.printStackTrace (); } } }
Проверьте результат
Скомпилируйте классы, используя компилятор javac следующим образом:
C:\Jackson_WORKSPACE>javac JacksonTester.java
Теперь запустите jacksonTester, чтобы увидеть результат:
C:\Jackson_WORKSPACE>java JacksonTester
Проверьте вывод
Name: Mahesh Kumar Age: 21 Verified: No Marks: [ 100 90 85 ]