json中含有换行符' ',' '的处理

Posted infinite

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了json中含有换行符' ',' '的处理相关的知识,希望对你有一定的参考价值。

一、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格式出错。如下:

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

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

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

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

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

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

四、修改隐藏bug

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

  如下给出的说明:

  最终修改方式:

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

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

五、问题总结

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

阅读原文

以上是关于json中含有换行符' ',' '的处理的主要内容,如果未能解决你的问题,请参考以下文章

多条dict写入json文件的时候,怎么加换行符

字典(JSON)数据写入文件并换行,Python

字典(JSON)数据写入文件并换行,Python

Python 保存为json,并按json文件格式换行,中文不乱码

PHP,Excel导出换行

oracle 查找某字段中含有回车换行的记录,请问怎么写SQL?