簡體   English   中英

Gson從JSON獲取對象列表

[英]Gson get list of objects from json

我有一個包含對象數組(過濾器數組)的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;
    }
}

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

    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM