一、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中含有换行符'\r','\n'的处理的更多相关文章

  1. sybase数据库和oracle数据库中字段中含有换行符的解决办法

    最近在做数据库从sybase到oracle的迁移工作,sybase数据库表bcp导出后,通过sqlldr导入到oracle数据库,然后oracle数据库通过spool按照sybase数据库bcp的格式 ...

  2. SQL列中含有换行符的查找和替换方法

    最近在获取数据时,发现程序读取的字段中含有\r\n字符,检查数据库表中的数据,发现是varchar字符串中包含了换行符.导入数据导致了这一情况出现. 回车换行 不同系统的行结尾符号并不同,如下: li ...

  3. Java中的换行符

    Java中的换行符 PrintWriter out = response.getWriter(); out.write("\r\n"); Java中的换行符"\r\n&q ...

  4. 关于sql中去换行符的问题

    今天要用bootstrap开发一个网页,要使用到JSON,但是JSON的格式不正确,然后在http://www.bejson.com/[Be JSON]中测试了一下JSON. 发现JSON中多了一个换 ...

  5. C#中插入换行符

    要让一个Windows Form的TextBox显示多行文本就得把它的Multiline属性设置为true. 这个大家都知道,可是当你要在代码中为Text属性设置多行文本的时候可能会遇到点麻烦:) 你 ...

  6. **PHP中替换换行符

    PHP中替换换行符 php 不同系统的换行不同系统之间换行的实现是不一样的linux 与unix中用 \nMAC 用 \rwindow 为了体现与linux不同 则是 \r\n所以在不同平台上 实现方 ...

  7. textarea 中的换行符问题

    下面是我对这个问题的解决过程,最后算是完全搞懂了,真是阴沟里险些翻船 1.必须知道textarea中的换行符是 \n  (个人检测发现按回车键是\n,好像在linux下是\r\n) 2.用nl2br之 ...

  8. WPF中的换行符

    原文:WPF中的换行符 WPF中UI上和后台代码中的换行符不同. 其中: XAML中为 C#代码中为 \r\n 或者: Environment.NewLine 版权声明:本文为博主原创文章,未经博主允 ...

  9. java中除去字符串(String)中的换行字符(\r \n)

    有时在文本框中输入内容特别是粘贴内容时会出现一些换行符(\r\n),如下,在做字数验证或保存到数据库中时应过滤掉. str.replaceAll("\r|\n","&qu ...

随机推荐

  1. CSS3 ,fill-available、max-content、min-content、fit-content,自适应

    自适应: 撑满空闲空间与收缩到内容尺寸. CSS3将这两种情况分别定义为'fill-availabel'和'fit-content'. 除此之外 ,还新增了更细粒度的'min-content'和'ma ...

  2. 在Element节点上进行Xpath

    XPathFactory xPathFactory = XPathFactory.newInstance(); XPath xpath = xPathFactory.newXPath(); try { ...

  3. H3C 出站包过滤工作流程

  4. linux 编译模块

    第一步, 我们需要看一下模块如何必须被建立. 模块的建立过程与用户空间的应用程序的 建立过程有显著不同; 内核是一个大的, 独立的程序, 对于它的各个部分如何组合在一起 有详细的明确的要求. 建立过程 ...

  5. linux 后备缓存

    一个设备驱动常常以反复分配许多相同大小的对象而结束. 如果内核已经维护了一套相同 大小对象的内存池, 为什么不增加一些特殊的内存池给这些高容量的对象? 实际上, 内核 确实实现了一个设施来创建这类内存 ...

  6. javascript异步编程 Async/await

    Async/await Async/await 在学习他之前应当补充一定的 promise 知识 它是一种与 promise 相配合的特殊语法,目前被认为是异步编程的终级解决方案 值得我们每一个人学习 ...

  7. html2canvas生成图片报错处理办法

    详见大佬博客链接: link.(https://www.jianshu.com/p/22bd5b98e38a) 需要注意的是要生成的网页中带的网络图片地址(如放在阿里云服务器图库的图片)经常有跨域报错 ...

  8. axios发送POST时请求两次,第一次为OPTIONS

    出现问题: 发送POST请求时浏览器产生两次请求,第一次为OPTIONS,第二次是真正的POST请求,后台接收不到参数. 查找原因: 非GET请求,会先发送OPTIONS进行预检(预检请求每次运行只发 ...

  9. 备战省赛组队训练赛第五场(UPC)

    中石油比赛链接 CF题目链接 E:博客 G:李继朋  博客 H:苗学林  贺振原 J:博客  苗学林 机房白给队全方位题解:A B E G I J

  10. Node.js入门-知识整理

    目的:使用Node.js实现文件上传并将上传的文件显示到浏览器中 基本工具:Node.js,在windows下需要下载cygwin64来运行shell命令 文件:服务器模块.请求路由模块.请求处理程序 ...