Dart中jsonEncode生成多余括号对问题及修复方法
问题修复方案
首先,jsonEncode(Map<String, dynamic>)本身只会生成标准的JSON对象格式(比如{"date_required":null}),不会自动添加外层括号。你看到的({"date_required":null})大概率是后续代码对dateRequiredString做了额外包裹处理,比如在组装请求体时不小心加了括号。
按以下步骤排查修复:
先在代码里添加打印,确认
jsonEncode的输出是否正确:String dateRequiredString = jsonEncode(data); print(dateRequiredString); // 检查控制台输出是否为 {"date_required":null}如果打印结果是正确的,说明问题出在后续使用这个字符串的环节(比如请求发送时的拼接逻辑),找到并移除多余的括号即可。
如果打印结果确实带外层括号,那检查
formatDbDate()方法的实现,看它是否返回了带括号的字符串。不过你的场景中dateRequired为null,走的是null分支,所以这一步概率较低。额外验证:可以单独写一段测试代码确认
jsonEncode的行为:import 'dart:convert'; void main() { Map<String, dynamic> testData = {'date_required': null}; print(jsonEncode(testData)); // 输出应为 {"date_required":null} }
内容的提问来源于stack exchange,提问作者markhorrocks
相关产品推荐
相关产品推荐

