java - 如何从 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 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
}
但是,如果您的代码只能处理字符串表示,您可以只调用上面.toString()
的代码rawValue
(除非它是null
!)而不关心它的实际类型。
推荐阅读
- python - sympy 匹配模数有困难
- node.js - Vuejs从nodejs res.sendFile加载图像
- ruby-on-rails - 在 Ubuntu 16.04.5 LTS 上使用“rake db:migrate”时出错
- sql - postgres 在创建视图时将连接匹配聚合到多个数组字段
- python - 每个日期最近 7 天的汇总数据
- bash - 如何在文件中每隔五行打印一次
- mysql - 在mysql中创建实体关系图
- sql - 根据最近的日期选择行,包括唯一信息
- sql - 准备好的 SQL 查询与扩大 WHERE 过滤器
- java - 将 yyyy-MM-dd 中的 String Date 转换为 Java UtilDatein 格式 yyyy-MM-dd