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.但如果不可能,这将有效. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |