如何使用Java和Gson从Json获取对象列表

时间:2018-09-06 12:33:15

标签: java json gson

我尝试从Json文件读取并将其迷惑为Java对象,我具有以下Java代码来读取Json:

class Item {
    String name;
    int itemId;
    Date AddTime;
    String group;
}

Gson gson = new Gson();
gson.fromJson(jsonFile, new TypeToken<Map<String, ArrayList<Item>>>() {}.getType());

Json文件包含以下数据:

{
  "item1": [{
    "name": "test1",
    "itemId": "1",
    "AddTime": "2018-09-05T10:35:56.015Z",
    "group": "computer"
  }, {
    "name": "test2",
    "itemId": "2",
    "AddTime": "2018-09-05T10:35:56.016Z",
    "group": "computer"
  }, {
    "name": "test3",
    "itemId": "3",
    "AddTime": "2018-09-05T10:35:56.017Z",
    "group": "computer"
  }],
  "item2": [{
    "name": "test4",
    "itemId": "4",
    "AddTime": "2018-09-05T10:35:56.015Z",
    "group": "computer"
  }, {
    "name": "test5",
    "itemId": "5",
    "AddTime": "2018-09-05T10:35:56.016Z",
    "group": "computer"
  }, {
    "name": "test6",
    "itemId": "6",
    "AddTime": "2018-09-05T10:35:56.017Z",
    "group": "computer"
  }]
}

我得到了以下内容:

com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1

我是Java新手,有什么问题以及如何解决?

1 个答案:

答案 0 :(得分:0)

我不确定这是否是您需要的,但是我认为解决方案可能是这样的。

根据您的数据集。在每个项目的内部,都有一个带有测试的arrayList(test1,test2 ...),因此您将需要以下内容:

    class Item {
       ArrayList<Test> tests;
    }

    class Test{
       String name;
       int itemId;
       Date AddTime;
       String group;
    }