我有一個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或者代碼,或者兩者都可以。任何想法?