【问题标题】:Gson get list of objects from jsonGson 从 json 获取对象列表
【发布时间】:2015-07-23 17:29:32
【问题描述】:

我有一个包含对象数组(过滤器数组)的 json 字符串。 json 字符串也有其他对象和字段,但我只对解析 json 数组感兴趣。谁能告诉我如何使用 Gson 做到这一点?

这是我的 json 文件:

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

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


  ]
}

和我的代码:

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

还有我的过滤器类:

public class Filters {

    private List<Filter> filters;

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

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

【问题讨论】:

标签: java json gson deserialization android-json


【解决方案1】:

你的 json 有效吗?试试这个:

data.json:

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

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:

public class Data {
    private List<Filter> filters;

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

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

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

    }

【讨论】:

  • 我会试试这个并回复你
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-06
  • 1970-01-01
  • 1970-01-01
  • 2017-02-26
相关资源
最近更新 更多