我有一个Java POJO像这样的对象:杰克逊无法JSON映射到包含一个地图
public class Widget {
private Map<String,Object> params;
// Getter, setter, ctor, etc...
}
我有,目前收到一个JSON String
的方法,并尝试使用杰克逊的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"
}]
}
在运行此我得到以下异常:使用杰克逊JSON映射到Java Map
com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance
of java.util.LinkedHashMap out of START_ARRAY token
我看到this other question解决一个非常类似的问题,但这个问题的地址,而不是一个对象(Widget
)是包含一个Java Map
。我使用http://jsonlint.com来验证JSON是有效的。 所以我需要改变JSON或者代码,或者两者都可以。任何想法?