Я видел много сообщений о том, как анализировать файлы JSON с помощью библиотеки Gson, но все они используют корневые элементы для выполнения сериализации. Итак, в этом случае у вас нет корневого элемента.
Пример (people.json)
[
{
"name":"Paul",
"telephone": 5434523542,
"email": "[email protected]"
},
{
"name":"William",
"telephone": 23423520,
"email": "[email protected]"
}
]
Файл JSON содержит более 1000 объектов, как два из них, представленные выше.
Я определил класс с именем Person, например
Person.java
public class Person {
private String name;
private int phone;
private String email;
public Person(String name, int phone, String email) {
this.name = name;
this.phone = phone;
this.email = email;
}
Итак, теперь я хочу получить всю информацию о моем основном классе с помощью библиотеки Gson. Как я могу это сделать без корневого элемента?




У вас там есть List <Person>. Так что это может помочь:
Type listType = new TypeToken<ArrayList<Person>>(){}.getType();
List<Person> persons = new Gson().fromJson(jsonArray, listType);
Или как массив:
Person[] persons = gson.fromJson(jsonString, Person[].class);
Не пробовал на моем ПК, но должно работать. Дай мне знать!
Я считаю, что этот вопрос уже задан (и дан ответ) Gson и десериализация массива объектов с массивами в нем
import java.io.FileReader;
import java.util.ArrayList;
import com.google.gson.Gson;
public class Foo
{
public static void main(String[] args) throws Exception
{
Gson gson = new Gson();
Person[] myTypes = gson.fromJson(new FileReader("input.json"), Person[].class);
System.out.println(gson.toJson(myTypes));
}
}
public class Person {
String name;
int phone;
String email;
}