有一个数组,当大小为1时,我收到的json数据不包含[]
;喜欢
{"firstname":"tom"}
当size大于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 时,反序列化失败。
我目前正在使用 jackson,这个问题有什么解决方案吗?
我想知道 jackson/gson 或任何其他库是否可以处理这个问题?
最佳答案
特别是对于 Jackson,您最好的选择是首先绑定(bind)到 JsonNode 或对象,例如:
Object raw = objectMapper.readValue(json, Object.class); // becomes Map, List, String etc
然后检查你得到了什么,再次绑定(bind):
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。但如果那是不可能的,这也行得通。
关于java - json反序列化问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5219073/