下面是我的JSON格式代碼:如何讀取一個JSON響應鍵名不區分大小寫
{
"topic": "Employee",
"message": {
"Id": "IND01",
"data": {
"salary": 50000
}
}
}
如topic
,message
,Id
和data
鍵名稱將被解讀爲不區分大小寫。我怎樣才能從這個JSON響應體獲取鍵?
下面是我的JSON格式代碼:如何讀取一個JSON響應鍵名不區分大小寫
{
"topic": "Employee",
"message": {
"Id": "IND01",
"data": {
"salary": 50000
}
}
}
如topic
,message
,Id
和data
鍵名稱將被解讀爲不區分大小寫。我怎樣才能從這個JSON響應體獲取鍵?
首先你JSON是不是vaild.I相信這是你的問題,它會解決你的其他問題。 嘗試
{
"topic": "Employee",
"message": {
"Id ": "IND01",
"data ": {
"salary ": 50000
}
}
}
這是你的case.Henceforth學習JSON的正確格式和使用任何JSON驗證器來驗證您的JSON有效JSON。
如果您可以將您的JSON轉換成地圖,你可以重新映射整個地圖(遞歸)轉化每個鍵的小寫值。
喜歡的東西:
public static Map<String,Object> convertToLowerCaseKeys(Map<String,Object> map){
return map.entrySet().stream().collect(Collectors.toMap(e -> e.getKey().toLowerCase(), e -> {
if(e.getValue() != null && e.getValue() instanceof Map){
return convertToLowerCaseKeys((Map<String,Object>)e.getValue());
}
return e.getValue();
}));
}
注意,投給地圖可能是有點過於草率,但我已經與它的簡單性。
編輯:
要搜索(頂級)鍵,同時不區分大小寫:
public static Object getCaseInsensitive(Map<String,Object> map, String key){
if(key == null){
return map.get(null);
}
Optional<String> optional = map.keySet().stream().filter(e -> e != null && e.toLowerCase().equals(key.toLowerCase())).findAny();
if(optional.isPresent()){
return map.get(optional.get());
}
return null;
}
你應該嘗試重新制定你的問題作爲一個實際的問題。 –
你是不是清楚你的問題 –
-1從我這裏。你的問題沒有很好的表達,清晰甚至是可行的JSON字符串。快速回答的可能性與問題的清晰度成正比。 –