如何使用Java和Gson从Json获取对象列表
我尝试读取Json文件并将其转换为Java对象,我有以下Java代码来读取Json:如何使用Java和Gson从Json获取对象列表,java,json,gson,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
class Item {
String name;
int itemId;
Date AddTime;
String group;
}
Gson gson = new Gson();
gson.fromJson(jsonFile, new TypeToken<Map<String, ArrayList<Item>>>() {}.getType());
我得到以下信息:
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1
我是Java新手,问题出在哪里?如何解决?我不确定这是否是您需要的,但我认为解决方案可能是这样的 根据您的数据集。在每个项目的内部都有一个带有测试的arrayList(test1、test2…),因此您需要这样的内容:
class Item {
ArrayList<Test> tests;
}
class Test{
String name;
int itemId;
Date AddTime;
String group;
}
类项目{
阵列列表测试;
}
课堂测试{
字符串名;
int itemId;
日期和时间;
字符串组;
}
看起来你的文件不是真正以{
开头的。你可能想检查它是否有不可见的字符(可能是UTF-8 BOM?@Aaron抱歉,我不知道你的意思错误是抱怨GSON遇到的第一个字符不是{
,但是你发布的文件明显以开头{
。您应该检查您是否确实在读取您认为是读取的文件,但除此之外,文件开头可能有不可见的字符可以解释错误。您可以使用十六进制编辑器或带有“显示所有/控制字符”的文本编辑器检查是否存在这些字符函数但在第1行是字符串
,意味着您在JSON文本的最开始有一个引号字符,而不是{
字符也int itemId;Date AddTime;
字段可能不起作用…JSON中的每个字段都只是文本,您没有给GsonI一个日期解析器,我尝试了@ratzip中的示例(gson版本2.8.5)。给定的示例没有任何错误,因此我认为他不必更改任何内容。
class Item {
ArrayList<Test> tests;
}
class Test{
String name;
int itemId;
Date AddTime;
String group;
}