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值,其他数据类型都不能为accepted.So。有什么方法可以更改下面的代码吗?
String value = (String)subSourceMap3.get("value");以接受所有其他数据类型。
发布于 2020-01-15 15:30:24
如果您可以在映射中具有与该键相关联的任何类型,并且希望仅将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时除外!)而不关心它的实际类型。
发布于 2020-01-15 15:31:46
subSourceMap3是你的地图,get()返回你想要的对象。
Object yourObj = subSourceMap3.get("value");没有任何石膏。
发布于 2020-01-15 15:30:13
您可以使用
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);
}https://stackoverflow.com/questions/59746684
复制相似问题