开发者使用AT进行开发时,发布如下的json时,经常会出现ERROR:
1 | → AT+MPUB="data",0,0,“{“test”:1}” |
那么为什么出现这个问题呢?实际上时因为payload的双引号有误导致的。一般,写代码时,遇到这种情况,我们都使用如下方式规避:
1 | > a = "abc".."cef\"ghi\"jkl" |
#但是,AT开发怎么办呢?
同样的,我们也应该转义——使用\22代替所有payload的双引号。
1 | → AT+MPUB="data",0,0,“{\22test\22:1}” |
有的开发者可能不太理解,为什么是\22呢?实际上很简单啦,十六进制hex转十进制是34,ascii表中,34对应的就是双引号啦。
1 | > print(tonumber("22", 16)) |
#问题又来了,单片机端C代码中如何生成\22呢?
如果使用字符串,字符串内对\也需要转义处理,例如”\\22”才表示\22三个字节的字符串。