Древовидная структура
Gson может анализировать JSON в древовидную структуру, аналогично тому, как XML можно анализировать в DOM-дереве. Узлы дерева могут быть одним из этих подклассов JsonElement
: JsonObject
, JsonArray
, JsonPrimitive
и JsonNull
.
, поскольку JSON начинается с [
Вы можете выполнить синтаксический анализ JsonArray
следующим образом:
JsonArray root = gson.fromJson(JSON, JsonArray.class);
for (JsonElement elem : root) {
JsonObject obj = elem.getAsJsonObject();
String substituted_restday = obj.get("substituted_restday").getAsString();
String original_restday = obj.get("original_restday").getAsString();
System.out.printf("substituted_restday = '%s', original_restday = '%s'%n",
substituted_restday, original_restday);
}
Список карт
Gson может выполнить синтаксический анализ JSON объектов в Map
.
List<Map<String, String>> root = gson.fromJson(JSON, new TypeToken<List<Map<String, String>>>() {}.getType());
for (Map<String, String> obj : root) {
String substituted_restday = obj.get("substituted_restday");
String original_restday = obj.get("original_restday");
System.out.printf("substituted_restday = '%s', original_restday = '%s'%n",
substituted_restday, original_restday);
}
Массив POJO
Gson может анализировать объекты JSON в POJO. Это наиболее безопасный для обработки способ обработки данных.
MyObj[] root = gson.fromJson(JSON, MyObj[].class);
for (MyObj obj : root) {
System.out.printf("substituted_restday = '%s', original_restday = '%s'%n",
obj.substitutedRestday, obj.originalRestday);
}
class MyObj {
@SerializedName("")
String blank;
@SerializedName("substituted_restday")
String substitutedRestday;
@SerializedName("original_restday")
String originalRestday;
@SerializedName("id")
String id;
@SerializedName("_UNIQUEKEY_")
String uniqueKey;
@SerializedName("parentId")
String parentId;
}
Скорее всего, вам понадобятся методы получения и установки в вашем POJO. Это просто упрощенный пример выполнения.
Вывод (из всех 3)
substituted_restday = '2020-02-01', original_restday = '2020-02-08'
substituted_restday = '2020-02-03', original_restday = '2020-02-09'