【问题标题】:How to serialize and deserialize a list of objects using Jackson如何使用 Jackson 序列化和反序列化对象列表
【发布时间】:2019-10-25 11:01:07
【问题描述】:

我在反序列化对象数组时遇到错误。

ans int 下面的表达式是List<Restaurant> 类型

String json = obj.writeValueAsString(ans);

我在下面的行中遇到错误

List<Restaurant> all= Arrays.asList(obj.readValue(reslistjson,Restaurant[].class));

错误 - 无法从 START_OBJECT 令牌中反序列化 com.crio.qeats.dto.Restaurant[] 的实例 在 [Source: (String)"{"restaurantId":"12","name":"A2B","city":"Electronic City","imageUrl":"www.google.com","latitude": 20.015,"longitude":30.015,"opensAt":"18:00","closesAt":"23:00","attributes":["Tamil","South Indian"]}";行:1,列:1]

【问题讨论】:

  • 似乎您的 JSON 代表一个对象,而您正试图将其反序列化为一个数组。
  • @RobbyCornelissen 这是一个对象列表 我应该做些什么改变?
  • 如果没有您提供MVCE,就无法判断。
  • 你能告诉我们你的reslistjson是什么样的吗?所以我们可以弄清楚为什么它没有反序列化
  • 你的 JSON 显然有问题,你为什么不序列化你的餐厅数组,看看它应该是什么样子?

标签: java json serialization jackson json-deserialization


【解决方案1】:

您的示例中的 JSON 输入是对象而不是数组。 对于您的 JSON 数据,这将起作用:

List<Restaurant> all= Arrays.asList(objectMapper.readValue(json,Restaurant.class));

像这样的 JSON 是一个对象数组,您的原始代码可以工作:

String json = "[{..data1 goes here....}, {..data2 goes here....}]";
List<Restaurant> all= Arrays.asList(objectMapper.readValue(json,Restaurant[].class));

【讨论】:

    猜你喜欢
    • 2022-01-22
    • 2020-08-07
    • 2014-03-11
    • 1970-01-01
    • 1970-01-01
    • 2020-03-30
    • 2015-05-20
    • 1970-01-01
    • 2018-12-26
    相关资源
    最近更新 更多