You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Dart传递字符串至API Payload时出现转义符及字符丢失问题

问题分析与解决方案

问题根源

你当前代码里的json.encode("$payload")是错误核心:

  • 若payload本身已是JSON格式字符串,再次调用json.encode()会把它当作普通文本编码,导致字符串内的双引号被转义为\",最终出现\\"这类冗余转义符。
  • 额外的字符串拼接"$payload"完全多余,还可能引发格式截断,造成你看到的末尾字符丢失问题。

分场景解决方案

场景1:payload是Map对象(推荐用法)

如果payload最初是Map类型(这是构建JSON的标准方式),直接对Map执行json.encode()即可生成正确的JSON:

// 定义payload为Map
Map<String, dynamic> payload = {
  "mode":"MULTI_WRITE",
  "api":"smartlight",
  "type":"strip_effects",
  "effect":"vibgyor",
  "device_id":"001_prdt_kp01",
  "source":"BLOCKLY"
};

// 直接编码Map,无需额外转换
var blocklyApiResponse = await apiProvider.getapiresponse(
    "private/wiziot-request/", json.encode(payload));

场景2:payload已经是JSON字符串

如果payload本身就是合法的JSON格式字符串,直接传递该字符串即可,不需要再调用json.encode():

// payload已是正确的JSON字符串,直接传递
var blocklyApiResponse = await apiProvider.getapiresponse(
    "private/wiziot-request/", payload);

验证修正效果

修正后,传递给API的payload会和你原始的JSON内容完全一致,不会出现冗余转义符,也不会丢失末尾的闭合符号}。

内容的提问来源于stack exchange,提问作者Krishnaa Krishna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 12:30:56