如何使用GSON解析不带根元素的JSON文件

时间:2018-12-12 12:06:24

标签: java json

我已经看到很多关于如何使用Gson库解析JSON文件的文章,但是它们都使用根元素来进行序列化。因此,在这种情况下,您没有根元素。

示例(persons.json)

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;
}

JSON文件具有超过1000个对象,如上面所表示的两个。

我定义了一个名为Person的类,例如

Person.java

functions/hello/hello.go
functions/hello2/hello2.go

所以现在,我想使用Gson库获取我的主类的所有信息。没有根元素怎么办?

2 个答案:

答案 0 :(得分:1)

您有一个列表<人员>。因此,这可以解决问题:

Type listType = new TypeToken<ArrayList<Person>>(){}.getType();
List<Person> persons = new Gson().fromJson(jsonArray, listType);

或作为数组:

Person[] persons = gson.fromJson(jsonString, Person[].class);

没有在我的PC上尝试过,但应该可以工作。让我知道!

答案 1 :(得分:0)

我相信这个问题已经问过(并回答了)Gson and deserializing an array of objects with arrays in it

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;
}