Flutter中如何将_JsonMap类型转换为标准Map类型
_JsonMap转标准JSON及提取业务数据方案
_JsonMap是JSON解析库的私有内部实现类(名称前缀下划线代表私有属性),本身已经实现了对应语言的标准Map/JSON节点接口,不需要额外做特殊提取操作,不同开发场景的操作方法如下:
Dart/Flutter 场景(最常见)
该场景下_JsonMap是dart:convert库执行jsonDecode后返回的默认实现,已经完整实现了Map<String, dynamic>接口,可直接作为普通Map操作:
- 直接提取业务字段示例:
import 'dart:convert'; // 假设responseData为你拿到的_JsonMap类型响应 // 直接取业务字段 String orderNo = responseData['order_info']['order_no']; int payAmount = responseData['order_info']['pay_amount'];
- 转标准JSON字符串:
String standardJson = jsonEncode(responseData);
- 显式转为普通Map对象(非必须,绝大多数场景不需要额外转换):
Map<String, dynamic> normalMap = Map.from(responseData);
Java 场景
如果是Jackson等JSON解析库的内部_JsonMap实现,可直接通过序列化工具操作:
- 转普通HashMap:
import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; // 假设jsonMap为你拿到的_JsonMap类型响应 ObjectMapper objectMapper = new ObjectMapper(); Map<String, Object> normalMap = objectMapper.convertValue(jsonMap, new TypeReference<Map<String, Object>>() {});
- 转标准JSON字符串:
String standardJson = objectMapper.writeValueAsString(jsonMap);
你遇到的找不到提取Map方法的问题,本质是因为_JsonMap作为私有内部类没有对外暴露自定义转换方法,直接用父接口的标准方法操作即可。
相关截图:
内容的提问来源于stack exchange,提问作者sosnus
相关产品推荐
相关产品推荐

