如何将Sqflite获取的List<Map>编码为键带双引号的标准JSON格式?
解决方案
你遇到的是Dart动态类型Map序列化的问题,不需要手动拼接引号,用Dart内置的序列化能力就能搞定,操作步骤如下:
- 第一步:导入Dart内置转换库
import 'dart:convert'; - 第二步:转换原始
List<Map<dynamic,dynamic>>为键为String类型的标准列表// 你的原始数据列表 List<Map<dynamic, dynamic>> rawItems = [ { 'product_id': 52302, 'name': 'جمبسوت اطفالي', 'image': 'https://khsomat.net/wp-content/uploads/2021/09/2-54.jpg', 'regularprice': 34000, 'saleprice': 27500, 'permalink': 'https://khsomat.net/product/%d8%ac%d9%85%d8%a8%d8%b3%d9%88%d8%aa-%d8%a7%d8%b7%d9%81%d8%a7%d9%84%d9%8a/', 'quantity': 1 } ]; // 转换为符合JSON序列化要求的列表 List<Map<String, dynamic>> processedItems = rawItems.map((dynamicItem) { return dynamicItem.map((key, value) => MapEntry(key.toString(), value)); }).toList(); - 第三步:直接传入请求即可
你直接把processedItems传给createOrder的itemsList参数即可,Dio在发送POST请求时会自动将其序列化为符合要求的带双引号的JSON格式,无需额外处理。
如果你需要手动验证序列化结果,可以调用
jsonEncode(processedItems),打印输出的内容就是你要求的目标格式,完全匹配WooCommerce REST API的参数要求。
注意:Dart调试时直接打印Map对象不会显示引号,这是调试输出的格式特性,不是数据本身的问题,只要完成上述类型转换,序列化后的结果一定符合要求。
内容的提问来源于stack exchange,提问作者Ahmed Galal
相关产品推荐
相关产品推荐

