当前位置: 首页 > 知识库问答 >
问题:

用Gson操作JSON

佟阳云
2023-03-14

我有以下问题。我有一个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是一个序列化的整数,每次创建新的obj时都使用AtomicInteger创建。

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”com.google.gson.jsonSyntaxException:java.lang.IllegalStateException:预期为BEGIN_ARRAY但在第1行第1列路径$处为STRING

如何正确地将json读回java类,应用一些更改,然后再次将其写回json?

共有1个答案

易飞文
2023-03-14

让我们看看错误代码

线程“main”com.google.gson.jsonSyntaxException:java.lang.IllegalStateException:预期为BEGIN_ARRAY但在第1行第1列路径$处为STRING

因此,库似乎需要一个JSON数组,但您给它一个字符串

尝试将其更改为typeToken ,看看是否有效。

 类似资料:
  • 如何正确地将json读回java类,应用一些更改,然后再次将其写回json?

  • 介绍一些常用的操作命令。

  • 我正在我的应用程序中使用ActionSheet。在我的iPhone上它可以工作,但在iPad模拟器上却不行。 这是我的代码: 我的错误是: 由于未捕获的异常“NSGenericeException”而终止应用程序,原因:“您的应用程序已呈现UIAlertControllerStyleActionSheet样式的UIAlertController()。具有此样式的UIAlertController的

  • 一、git 管理用户名 1.1、全局配置 全局设置用户名:$ git config --global user.name "XXXX" 全局设置邮箱:$ git config --global user.email "XXXX@gmail.com" 全局设置查看命令:$ git config -l 1.2、局部配置 注:项目单独配置的用户名具有比全局配置的用户更高优先级 1.2.1、使用命令设置

  • 如果你开始部署集群时没有创建存储池, Ceph 会用默认存储池 rbd 存放数据。存储池提供的功能: 自恢复力: 你可以设置在不丢数据的前提下允许多少 OSD 失效。对多副本存储池来说,此值是一对象应达到的副本数。典型配置是存储一个对象和它的一个副本(即 size = 2 ),但你可以更改副本数;对纠删编码的存储池来说,此值是编码块数(即纠删码配置里的 m = 2 )。 归置组: 你可以设置一个存

  • HyperLogLog主要解决大数据应用中的非精确计数(可能多也可能少,但是会在一个合理的范围)操作,它可以接受多个元素作为输入,并给出输入元素的基数估算值,基数指的是集合中不同元素的数量。比如 {‘apple’, ‘banana’, ‘cherry’, ‘banana’, ‘apple’} 的基数就是 3 。 HyperLogLog 的优点是,即使输入元素的数量或者体积非常非常大,计算基数所需的