[英]How to get the object value from a Map?
Map<String, Object> subSource2 = (Map<String, Object>)departmentPHSSuportEmail.get("SubSource");
List<Map<String , Object>> myMap2 = (List<Map<String , Object>>)subSource2.get("value");
Map<String,Object> subSourceMap3 = myMap2.get(0);
String value = (String)subSourceMap3.get("value");
在這里,我不會將該值指定為String
。 它可以是任何類型。 因此,當我將其轉換為 String 時,只應接受String
值,而不能接受其他數據類型。那么有什么方法可以更改以下代碼?
String value = (String)subSourceMap3.get("value");
到另一個接受所有其他數據類型。
如果您可以在 Map 中擁有與該鍵關聯的任何類型,並且只想將String
值轉換為String
,則需要在轉換之前檢查類型:
Object rawValue = subSourceMap3.get("value");
if (rawValue instanceof String) {
String value = (String) rawValue;
// do what you want with the String value
} else if (rawValue instanceof Long) { // or whatever else
// cast to Long
} else {
// throw an exception for unknown types or do nothing
}
但是,如果您的代碼只能處理字符串表示,則您可以在上面的rawValue
上調用.toString()
(除非它是null
!)而不關心它的實際類型。
subSourceMap3 是您的 Map 並且 get() 返回您想要的對象。
Object yourObj = subSourceMap3.get("value");
沒有任何演員。
您可以使用
Object value = subSourceMap3.get("value");
或者,如果您可以將其轉換為任何對象或自定義對象
YourCustomObject value = (YourCustomObject)subSourceMap3.get("value");
希望這可能會有所幫助。
對於評論中提到的情況,您可以使用以下代碼片段並根據您收到的數據類型添加條件:-
if(val.get("sample") instanceof Double) {
itemjson.setTest((Double) val.get("sample"));
}else if(val.get("sample") instanceof Integer) {
itemjson.setTest((Integer) val.get("sample"));
}else if(val.get("sample") instanceof Float) {
itemjson.setTest((Float) val.get("sample"));
}else if(val.get("sample")==JSONObject.NULL){
itemjson.setTest(null);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.