Учебники

Gson — модель дерева

Модель дерева подготавливает представление дерева JSON в памяти. Он строит дерево узлов JsonObject. Это гибкий подход, аналогичный анализатору DOM для XML.

Создать дерево из JSON

JsonParser предоставляет указатель на корневой узел дерева после чтения JSON. Корневой узел может использоваться для обхода всего дерева. Рассмотрим следующий фрагмент кода, чтобы получить корневой узел предоставленной строки JSON.

//Create an JsonParser instance 
JsonParser parser = new JsonParser(); 

String jsonString = 
"{\"name\":\"Mahesh Kumar\", \"age\":21,\"verified\":false,\"marks\": [100,90,85]}"; 

//create tree from JSON 
JsonElement rootNode = parser.parse(jsonString);

Модель дерева обхода

Получить каждый узел, используя относительный путь к корневому узлу при обходе дерева и обработать данные. Следующий фрагмент кода показывает, как вы можете пройти по дереву.

JsonObject details = rootNode.getAsJsonObject(); 

JsonElement nameNode = details.get("name"); 
System.out.println("Name: " +nameNode.getAsString()); 

JsonElement ageNode = details.get("age"); 
System.out.println("Age: " + ageNode.getAsInt()); 

пример

Создайте файл класса Java с именем GsonTester в C: \> GSON_WORKSPACE.

Файл — GsonTester.java

import com.google.gson.JsonArray; 
import com.google.gson.JsonElement; 
import com.google.gson.JsonObject; 
import com.google.gson.JsonParser;
import com.google.gson.JsonPrimitive;  

public class GsonTester { 
   public static void main(String args[]) { 
   
      String jsonString = 
         "{\"name\":\"Mahesh Kumar\", \"age\":21,\"verified\":false,\"marks\": [100,90,85]}";
      JsonParser parser = new JsonParser();  
      JsonElement rootNode = parser.parse(jsonString);  
      
      if (rootNode.isJsonObject()) { 
         JsonObject details = rootNode.getAsJsonObject();  
         JsonElement nameNode = details.get("name"); 
         System.out.println("Name: " +nameNode.getAsString());  
         
         JsonElement ageNode = details.get("age"); 
         System.out.println("Age: " + ageNode.getAsInt());  
         
         JsonElement verifiedNode = details.get("verified"); 
         System.out.println("Verified: " + (verifiedNode.getAsBoolean() ? "Yes":"No"));  
         JsonArray marks = details.getAsJsonArray("marks"); 
         
         for (int i = 0; i < marks.size(); i++) { 
            JsonPrimitive value = marks.get(i).getAsJsonPrimitive(); 
            System.out.print(value.getAsInt() + " ");  
         } 
      } 
   }   
}

Проверьте результат

Скомпилируйте классы, используя компилятор javac следующим образом:

C:\GSON_WORKSPACE>javac GsonTester.java 

Теперь запустите GsonTester, чтобы увидеть результат —

C:\GSON_WORKSPACE>java GsonTester 

Проверьте вывод.