json中含有换行符'\r','\n'的处理
一、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'的处理的更多相关文章
- sybase数据库和oracle数据库中字段中含有换行符的解决办法
最近在做数据库从sybase到oracle的迁移工作,sybase数据库表bcp导出后,通过sqlldr导入到oracle数据库,然后oracle数据库通过spool按照sybase数据库bcp的格式 ...
- SQL列中含有换行符的查找和替换方法
最近在获取数据时,发现程序读取的字段中含有\r\n字符,检查数据库表中的数据,发现是varchar字符串中包含了换行符.导入数据导致了这一情况出现. 回车换行 不同系统的行结尾符号并不同,如下: li ...
- Java中的换行符
Java中的换行符 PrintWriter out = response.getWriter(); out.write("\r\n"); Java中的换行符"\r\n&q ...
- 关于sql中去换行符的问题
今天要用bootstrap开发一个网页,要使用到JSON,但是JSON的格式不正确,然后在http://www.bejson.com/[Be JSON]中测试了一下JSON. 发现JSON中多了一个换 ...
- C#中插入换行符
要让一个Windows Form的TextBox显示多行文本就得把它的Multiline属性设置为true. 这个大家都知道,可是当你要在代码中为Text属性设置多行文本的时候可能会遇到点麻烦:) 你 ...
- **PHP中替换换行符
PHP中替换换行符 php 不同系统的换行不同系统之间换行的实现是不一样的linux 与unix中用 \nMAC 用 \rwindow 为了体现与linux不同 则是 \r\n所以在不同平台上 实现方 ...
- textarea 中的换行符问题
下面是我对这个问题的解决过程,最后算是完全搞懂了,真是阴沟里险些翻船 1.必须知道textarea中的换行符是 \n (个人检测发现按回车键是\n,好像在linux下是\r\n) 2.用nl2br之 ...
- WPF中的换行符
原文:WPF中的换行符 WPF中UI上和后台代码中的换行符不同. 其中: XAML中为 C#代码中为 \r\n 或者: Environment.NewLine 版权声明:本文为博主原创文章,未经博主允 ...
- java中除去字符串(String)中的换行字符(\r \n)
有时在文本框中输入内容特别是粘贴内容时会出现一些换行符(\r\n),如下,在做字数验证或保存到数据库中时应过滤掉. str.replaceAll("\r|\n","&qu ...
随机推荐
- ACM学习网站、
转载:http://www.cnblogs.com/zhourongqing/archive/2012/05/24/2516180.html http://61.187.179.132/JudgeOn ...
- 2018-6-11-WPF-Frame-的-DataContext-不能被-Page-继承
title author date CreateTime categories WPF Frame 的 DataContext 不能被 Page 继承 lindexi 2018-06-11 10:48 ...
- 三种查看MySQL数据库版本的方法
https://blog.csdn.net/hj7jay/article/details/51921504 1.使用-V参数 首先我们想到的肯定就是查看版本号的参数命令,参数为-V(大写字母)或者-- ...
- java 使用反射调用方法
每个Method的对象对应一个具体的底层方法.获得Method对象后,程序可以使用Method里面的invoke方法来执行该底层方法. Object invoke(Object obj,Object ...
- 2018-8-10-win10-uwp-slider-隐藏显示数值
title author date CreateTime categories win10 uwp slider 隐藏显示数值 lindexi 2018-08-10 19:17:19 +0800 20 ...
- Linux 内核 struct device 设备
在最低层, Linux 系统中的每个设备由一个 struct device 代表: struct device { struct device *parent; struct kobject kobj ...
- nginx负载均衡的几种模式
nginx 的 upstream目前支持 4 种方式的分配 ).轮询(默认) 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除. ).weight 指定轮询几率,we ...
- 看各类框架源码淘来的一些JavaScript技巧
1. 创建定长的JavaScript数组,并赋空值: 出自VUE文档Render函数讲解 // 创建定长20的JavaScript数组,并把每个项的值设为null Array.apply(null, ...
- Apache Derby-01介绍DERBY
1.DERBY是什么: Apache Derby 是IBM于2004年贡献给Apache软件基金会的数据库,于2005年正式成为开源项目,Derby作为一个基于JAVA的关系型数据库框架,他拥有许多便 ...
- requests + bs4 爬取豌豆荚所有应用的信息
1.分析豌豆荚的接口的规律 - 获取所有app的接口url 2.往每一个接口发送请求,获取json数据 解析并提取想要的数据 app_data: 1.图标 app_img_url 2.名字 app_n ...