如何遍历JSON解码得到的Map提取键值并通过HTTP传递给服务端
遍历解码Map并完成http传参的实现
- 当前通过
json.decode得到的Map为扁平化键值对结构,其中的material[0][name]是完整的字符串类型键,并非Map的嵌套路径,无需做递归嵌套遍历 - 直接调用Map的内置遍历方法即可提取所有参数名和对应参数值,核心遍历代码:
var decodedMap = json.decode(obj) as Map<String, dynamic>; decodedMap.forEach((paramKey, paramValue) { // paramKey 为完整参数名,例如 material[0][name] // paramValue 为对应参数值,例如 BRC、2 print('提取到参数:$paramKey = $paramValue'); });
- http模块传参适配:
Dart官方http包的表单POST请求可直接接收这类带中括号格式的键值对Map,无需手动重组嵌套结构,完整传参示例:
import 'package:http/http.dart' as http; Future<void> submitParams(String rawJson) async { final params = json.decode(rawJson) as Map<String, dynamic>; final response = await http.post( Uri.parse("服务端接口地址"), // 直接将解码得到的Map作为请求体传入 body: params, ); // 响应处理逻辑 }
- 实操注意事项:
- 无需手动拆分键名拼接嵌套结构,当前的键格式本身符合绝大多数服务端表单接口的参数解析规则
- 如果参数值为数字等非字符串类型,http模块会在发送请求时自动将其转换为字符串格式,无需手动做类型转换
内容的提问来源于stack exchange,提问作者Tony
相关产品推荐
相关产品推荐

