【发布时间】:2017-05-06 21:12:57
【问题描述】:
我有一个像这样的 Java POJO:
public class Widget {
private Map<String,Object> params;
// Getter, setter, ctor, etc...
}
我有一个当前接收 JSON String 的方法,并正在尝试使用 Jackson 的 ObjectMapper 将该 JSON 映射到 Widget 实例:
public Widget fromJSON(String json) {
ObjectMapper jsonMapper = new ObjectMapper();
return jsonMapper.readValue(json, Widget.class);
}
目前我传入的 JSON 是:
{
"params": [{
"acks": "all"
}, {
"retries": 0
}, {
"batch.size": 16384
}, {
"linger.ms": 1
}, {
"buffer.memory": 33554432
}, {
"key.serializer": "org.apache.kafka.common.serialization.StringSerializer"
}, {
"value.serializer": "org.apache.kafka.common.serialization.StringSerializer"
}]
}
运行时出现以下异常:
com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance
of java.util.LinkedHashMap out of START_ARRAY token
我看到this other question 解决了一个非常相似的问题,除了该问题解决了使用 Jackson 将 JSON 映射到 Java Map,而不是 包含 Java @ 的对象 (Widget) 987654332@.
我使用http://jsonlint.com 来验证 JSON 是否有效。 所以我要么需要更改 JSON 或代码,要么可能同时更改两者。有什么想法吗?
【问题讨论】:
标签: java json serialization jackson linkedhashmap