我有json字段如下所示。我怎樣才能將它反序列化爲String,String Map?不同類型的嵌套對象的java傑克遜反序列化
s:{
"g":0.0,
"p":0.0,
"m":0.0,
"media":{
"1":{"key":0,"value":0},
"2":{"key":0,"value":0},
"3":{"key":0,"value":0},
"4":{"key":0,"value":0},
...},
"pr":{
"1":{"key":0,"value":0},
"2":{"key":0,"value":0},
"3":{"key":0,"value":0},
...}
}
我已經試過這樣的
public JsonNode s;
@JsonGetter("s")
public Map<String,String> getS() {
if (s == null) {
return null;
}
ObjectMapper mapper = new ObjectMapper();
Map<String, Object> map;
map = mapper.convertValue(score, new TypeReference<Map<String, Object>>(){});
Map<String,String> result;
for (Map.Entry<String, Object> entry : map.entrySet()) {
if(entry.getValue() instanceof String){
result.put(entry.getKey(), (String) entry.getValue());
}
}
return result;
}
,它的測試工作,但是我收到一個錯誤的真實數據
無法反序列化java.lang.String中的實例進行[來源:UNKNOWN; START_OBJECT ] line:-1,column:-1](通過引用 鏈:java.util.LinkedHashMap [「media」])
任何建議嗎?
什麼是與我嘗試區別?我已經先轉換地圖<字符串,對象>,然後映射。我應該如何將它投入您的建議中? –
Sergei
@Sergei's'不是'Map''''''''''''''''''''''''''''另外還有3層的嵌套來獲得'media'中的鍵值 –
nullpointer
(Map.Entry entry:map .entrySet()){result.put(entry.getKey(),entry.getValue()。toString()); } –
Sergei