• 欢迎大家分享资料!前往留言板评论即可!

【AT】MQTT发布JSON出错的应对策略

合宙 模组资料网 2年前 (2021-05-15) 354次浏览 0个评论 扫描二维码

开发者使用AT进行开发时,发布如下的json时,经常会出现ERROR:

→ AT+MPUB="data",0,0,“{“test”:1}”
← ERROR

那么为什么出现这个问题呢?实际上时因为payload的双引号有误导致的。一般,写代码时,遇到这种情况,我们都使用如下方式规避:

> a = "abc".."cef\"ghi\"jkl"
> print(a)
abccef"ghi"jkl

#但是,AT开发怎么办呢?
同样的,我们也应该转义——使用\22代替所有payload的双引号

→ AT+MPUB="data",0,0,“{\22test\22:1}”

有的开发者可能不太理解,为什么是\22呢?实际上很简单啦,十六进制hex转十进制是34,ascii表中,34对应的就是双引号啦。

> print(tonumber("22", 16))
34
> print(string.char(34))
"

#问题又来了,单片机端C代码中如何生成\22呢?
如果使用字符串,字符串内对\也需要转义处理,例如”\\22″才表示\22三个字节的字符串。


转载请注明原文链接:【AT】MQTT发布JSON出错的应对策略
喜欢 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址