一、josn简易说明

json是一种轻量级的数据交换格式,是一系列格式字符串。在数据交换中,经常会使用到,具有易读性,轻量级。很多地方会使用到,用处广泛。如下:(截取的一段json体)

"matchrule": {

"tag_id": "2",

"sex": "1",

"country": "中国",

"province": "广东",

"city": "广州",

"client_platform_type": "2",

"language": "zh_CN"

}

想对json格式有更多了解,查阅相关文档。

二、josn中传递'\r','\n'出现问题

在传递'\r','\n'的json的字符串时,遇到了josn格式出错。如下:

896904deb6b8ce9c2afde3979130c0c2.png

在网络中抓取传输的json体,通过格式化校验时报错。认为"RelNotes"的内容是不完整的。没有找到引号的另一半["]导致解析失败。实际上是因为在箭头处遇到了换行符导致解析json失败。

因此,我想在"RelNotes"中传递换行符,但不能导致接收端解析失败。这个怎么处理???

三、josn中处理带'\r','\n'换行符

很明显'\r','\n'是特殊含义的字符,需要进行转义,需要在该字符前加上转义符号‘\’。在实际中,我也是这么处理的。问题很快解决掉。

如下是我的处理方式:(这里有隐藏bug)

9358765c469d45a0b0f162ad9d2e8c93.png

找到"\r\n",替换"\\r\\n",这边测试功能是可以的。但是隐藏了一个bug。

四、修改隐藏bug

正常在我们测试是ok的,有同事出差到外地,发现这个功能还是有问题。抓包查看这里面还存在换行符。??? 想这怎么回事,明明处理过的,把"\r\n",替换成"\\r\\n"就可以了。???赶紧百度搜下,哈哈。。。,终于知道了。原来换行符有问题。

如下给出的说明:

1e5322a797f05a9de98ec2cd1536f083.png

最终修改方式:

9e5d8442d0941522ce7f3365756d983d.png

找到"\r",替换成"\\r","\n",替换成"\\n"。测试问题解决!!!

由于那边电脑很有可能使用的是MAC,换行是"\r",导致json解析失败。

五、问题总结

刚才开始解决换行时,没考虑这么多。就是"\r\n",替换成"\\r\\n"就可以了,当时测试也是没问题。特殊bug在,特殊情形下出现时,后来解决时才发现,哦,问题原来是这样啊!也算加深了知识点。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐