首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从Map中获取对象值?

如何从Map中获取对象值?
EN

Stack Overflow用户
提问于 2020-01-15 15:18:50
回答 3查看 174关注 0票数 2
代码语言:javascript
复制
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。有什么方法可以更改下面的代码吗?

代码语言:javascript
复制
String value = (String)subSourceMap3.get("value");

以接受所有其他数据类型。

EN

回答 3

Stack Overflow用户

发布于 2020-01-15 15:30:24

如果您可以在映射中具有与该键相关联的任何类型,并且希望仅将String值转换为String,则需要在转换之前检查该类型:

代码语言:javascript
复制
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时除外!)而不关心它的实际类型。

票数 2
EN

Stack Overflow用户

发布于 2020-01-15 15:31:46

subSourceMap3是你的地图,get()返回你想要的对象。

代码语言:javascript
复制
Object yourObj = subSourceMap3.get("value");

没有任何石膏。

票数 1
EN

Stack Overflow用户

发布于 2020-01-15 15:30:13

您可以使用

代码语言:javascript
复制
Object value = subSourceMap3.get("value");

或者是否可以将其强制转换为任何对象或自定义对象

代码语言:javascript
复制
YourCustomObject value = (YourCustomObject)subSourceMap3.get("value");

希望这能帮上忙。

对于注释中提到的情况,您可以使用以下代码片段,并根据您收到的数据类型添加条件:

代码语言:javascript
复制
    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);
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59746684

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档