此问题在此处已有答案:
Expected BEGIN_ARRAY but was STRING but JSON is correct(1个答案)
去年关闭了。
我遇到了以下问题。我有一个Writer类,它通过Gson将我创建的所有对象写入到JSON文件中。输出如下所示:
{
"eventID": 1,
"title": "one",
"timeCreated": "Sep 23, 2007, 10:10:00 AM",
"timeModified": "Sep 23, 2007, 10:10:00 AM",
"timeStart": "Nov 11, 2999, 11:11:00 AM",
"timeEnd": "Nov 11, 3999, 11:11:00 AM",
"alarmOn": true,
"content": ""
}
eventID是每次创建新对象时用AtomicInteger创建的序列化整数。
我想操作这些对象,比如设置一个新的标题。所以在第一步中,我尝试通过fromJson将JSON返回到java中
Gson gson = new Gson();
Type myDataType = new TypeToken<Collection<Event>>() {
}.getType();
Collection<Event> myData = gson.fromJson("awesome.json", myDataType);
for (Event e : myData) {
System.out.println("value= " + e.getTitle());
}
但是,这会导致错误
在线程“main”中出现异常。java.lang.IllegalStateException:路径$的第1行第1列需要开始_ARRAY,但它是STRING
我如何正确地将json读回我的java类,应用一些更改,然后再写回json?
1条答案
按热度按时间56lgkhnf1#
让我们看一下错误代码
在线程“main”中出现异常。java.lang.IllegalStateException:路径$的第1行第1列需要开始_ARRAY,但它是STRING
因此,看起来库需要的是
json array
,但您给予它的却是String。它很可能与此有关,比如
new TypeToken<Collection<Event>>()
,你说你的类型是一个collection
的事件,而不是一个事件。尝试将其更改为
TypeToken<Event>
,看看是否有效。