简体   繁体   English

Gson从JSON获取对象列表

[英]Gson get list of objects from json

I have a json string that contains a array of objects(filters array). 我有一个包含对象数组(过滤器数组)的json字符串。 The json string has other objects and fields too but im interested in only parsing the json array. json字符串也具有其他对象和字段,但是我只对解析json数组感兴趣。 Can anyone tell me how can I do this using Gson? 谁能告诉我如何使用Gson做到这一点?

Here is my json file: 这是我的json文件:

{
  name: "test json", 
  test_ob: {
    name: "test"
  } 

  filters[
    {
    test: 1,
    test: 2,
    ...
    }
    ...


  ]
}

and my code: 和我的代码:

 Filters filters = new Gson().fromJson(JSONcontent.toString(), Filters.class);

And my filters class: 和我的过滤器类:

public class Filters {

    private List<Filter> filters;

    public List<Filter> getFilters() {
        return filters;
    }

    public void setFilters(List<Filter> filters) {
        this.filters = filters;
    }
}

Is your json valid? 您的json有效吗? Try this: 尝试这个:

data.json: data.json:

{
  name: "test json", 
  test_ob: {
    name: "test"
  },
  filters: [
    {
        name: filter1,
        value: 1
    },
    {
        name: filter2,
        value: 2
    }
  ]
}

Filter.java: Filter.java:

public class Filter {
    private String name;
    private String value;

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getValue() {
        return value;
    }
    public void setValue(String value) {
        this.value = value;
    }

}

Data.java: Data.java:

public class Data {
    private List<Filter> filters;

    public List<Filter> getFilters() {
        return filters;
    }

    public void setFilters(List<Filter> filters) {
        this.filters = filters;
    }
}

Test.java: Test.java:

public static void main(String[] args) {
        Gson gson = new Gson();

        Object obj;
        try {
            JsonParser parser = new JsonParser();
            obj = parser.parse(new FileReader("C:\\data.json"));
            JsonObject jsonObject = (JsonObject) obj;

            Data data = gson.fromJson(jsonObject, Data.class);

        } catch (JsonIOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (JsonSyntaxException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM