Java读取含内部对象数组的HashMap并提取值存入新HashMap
解决Java中从嵌套HashMap提取指定值的问题
你的问题核心错误在于对result类型的判断:JSON结构里的result是数组(即便仅包含一个元素),但你之前的代码直接将其强转为HashMap,这会导致类型转换异常。
正确提取步骤及代码
- 先将
response中的result取出并转为List(JSON数组在Java中通常被解析为List类型) - 取出数组中的第一个对象(你明确结果内部仅包含一个对象)
- 从该对象中获取
desc对应的HashMap - 提取
value1和value2存入目标HashMap
代码示例:
// 获取result对应的List(JSON数组解析后对应Java List) List<HashMap> resultList = (List<HashMap>) response.get("result"); // 取数组中的第一个元素 HashMap resultObj = resultList.get(0); // 获取desc对象 HashMap desc = (HashMap) resultObj.get("desc"); // 提取值存入目标map map.put("value1", desc.get("value1")); map.put("value2", desc.get("value2"));
额外注意
你提供的JSON结构存在语法错误,value2的键值对写法不完整,正确格式应为:
{ "result": [ { "desc": { "value1": "", "value2": "" } } ] }
若原始JSON格式错误,解析过程会抛出异常,需先确保JSON结构合法。
内容的提问来源于stack exchange,提问作者user20848574
相关产品推荐
相关产品推荐

