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

Arduino构建JsonObject上传IFTTT时JSON特定位置意外token报错如何解决

报错诱因

你遇到的JSON解析错误根源是转义规则冲突:

  • Google Sheets公式里的逗号分隔符需要用双引号包裹,而JSON规范明确要求字符串值内部的双引号必须前置反斜杠\转义才能被正确识别
  • 你当前在Arduino代码中写的\"仅会在最终输出的字符串里生成普通双引号",没有附带JSON要求的转义反斜杠,导致解析器碰到这个双引号时会误认为value2的字符串值提前结束,后续字符变成非法内容,最终触发400错误。

解决方法

给公式内部的双引号加双重转义:Arduino字符串中要输出一个反斜杠本身需要先转义为\\,再搭配转义双引号的\",最终要生成JSON要求的\"格式,Arduino代码里需要写为\\"。
修改后的代码片段如下:

int test_value = 1;
int t1 = test_value*1;
int t2 = test_value*2;
int t3 = test_value*3;
int t4 = test_value*4;
int t5 = test_value*5;
int t6 = test_value*6;

// 仅修改sgs的定义,给内部双引号加双重转义
String sgs = "=SPLIT(INDICE(1:2000; FILA();(COLUMNA()-1));\\\",\\\")";

String jsonObject = String("{\"value1\":\"") + t1 + "," + t2 + "," + t3 + "," + t4 + "," + t5 + "," + t6 + "\",\"value2\":\"" + sgs + "\"}";
Serial.println(jsonObject);

修改后可先通过串口输出验证JSON格式,合法的value2字段应该是类似"value2":"=SPLIT(INDICE(1:2000; FILA();(COLUMNA()-1));\",\")"的格式,双引号都带有反斜杠前缀。

优化建议

  • 避免手动拼接JSON字符串,推荐使用Arduino官方的ArduinoJson库,可自动处理所有转义逻辑,大幅降低格式错误概率
  • 发送请求前可先把拼接好的JSON内容复制到JSON校验工具中检查,能快速定位格式问题

内容的提问来源于stack exchange,提问作者Eduardo Leon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 03:36:03