加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – json反序列化问题

发布时间:2020-12-15 08:38:44 所属栏目:Java 来源:网络整理
导读:有一个数组,当大小为1时,我收到的json数据不包含[];喜欢 {"firstname":"tom"} 当大小大于1时,我收到的数据包含[],如 [{"firstname":"tom"},{"firstname":"robert"}] 目前我的类包含一个数组属性 String[] firstname;//getter setter omit here 代码处理这个
有一个数组,当大小为1时,我收到的json数据不包含[];喜欢

{"firstname":"tom"}

当大小大于1时,我收到的数据包含[],如

[{"firstname":"tom"},{"firstname":"robert"}]

目前我的类包含一个数组属性

String[] firstname;
//getter setter omit here

代码处理这个喜欢

ObjectMapper mapper = new ObjectMapper();    
MyClass object = mapper.readValue(json,MyClass.class);

当大小大于1时,反序列化工作.但是,当size为1时,反序列化失败.

我目前正在使用杰克逊,这个问题的任何解决方案?

我想知道杰克逊/ gson或任何其他图书馆是否可以处理这个问题?

解决方法

特别是杰克逊,你最好的选择是首先绑定到JsonNode或Object,如:

Object raw = objectMapper.readValue(json,Object.class); // becomes Map,List,String etc

然后检查你得到了什么,再次绑定:

MyClass[] result;
if (raw instanceof List<?>) { // array
  result = objectMapper.convertValue(raw,MyClass[].class);
} else { // single object
  result = objectMapper.convertValue(raw,MyClass.class);
}

但我认为你得到的JSON很糟糕 – 为什么你会返回一个只有1号数组的对象或数组? – 所以如果可能的话,我宁愿先修好JSON.但如果不可能,这将有效.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读