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.
File − 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
Проверьте вывод.
Name: Mahesh Kumar
Age: 21
Verified: No
100 90 85