0
我有一個地圖,在這種情況下,對象可能是數字,字符串,列表,數組或日期之一。 我需要複製這個Map,但在結果中,如果對象是Date類型(轉換細節不重要),我需要做一些轉換。遞歸生成其他地圖的地圖有一些轉換
我想我需要通過地圖0地圖讀取遞歸ti,但不能爲我的生活弄清楚如何做到這一點。誰能幫忙?
我可以弄清楚如何通讀完整的地圖,但不知道如何把它放。
下面是我想要做的一個大綱(非工作) - 它不創建輸出映射。
private void convertResult(Object o) {
Map<String, Object> returnMap = new HashMap<String, Object>();
if (o instanceof Map) {
for (Map.Entry<Object, Object> entry: ((Map<Object, Object>)o).entrySet()) {
convertResult(entry.getValue());
}
return;
} else if (o instanceof List) {
for (Object li: (List) o) {
convertResult(li);
}
return;
} else if (o instanceof Number) {
return;
} else if (o instanceof Boolean) {
return;
} else if (o instanceof String) {
return;
} else if (o instanceof Date) {
// convert the date here
return;
} else if (o.getClass().isArray()) {
JsonArray array = new JsonArray();
for (Object li: (Object[])o) {
convertResult(li);
}
return;
} else {
throw new IllegalArgumentException("Unsupported object " + o.getClass());
}
}
那麼,你有一個地圖充滿整數,字符串,日期,列表,數組和更多的地圖?誰喝醉了編程? –
a)returnMap從不使用。新的JsonArray相同b)你聲明'在這種情況下對象可能是Number,String,List,Array或Date之一,但你也檢查Map。 c)如果(o instanceof Number)等可以按'if(o instanceof x)||分組(o instanceof ...'d)既然你不返回任何東西,你必須修改數據。由於唯一修改後的數據是'date'類型,你可能會返回一個新的日期,這會被忽略? e)你想輸出地圖,還是返回它 - 返回一個修改後的地圖,包含相同的列表和數組或它們的副本?不清楚! –
非常有趣。 Map被定義爲'Map',這種情況下的對象可能是我提到的類型之一。不喝醉 - 這是一個很好的理由。 –
user1051058