JSON文件中非法字符的处理

JSON文件中非法字符的处理 | 沙湖王

JSON文件中非法字符的处理

JSON是一种很好的数据格式,但是简单之处也有麻烦的地方,比如如果JSON的字符串里面出现了双引号的话,那真是搞死人了。

之前我很傻,每次抛出异常,我就根据异常显示的位置,去慢慢一个一个找错误的地方,昨天才发现,网上有很多免费的JSON检查的网站,http://jsonlint.com/ 这个就很不错,把你的JSON文件粘贴过去,有错误的时候,就会显示第几行哪里错误了。

 

还有一个比较麻烦的是,有时候你需要写一个自动程序处理JSON数据,但是可能传过来的JSON数据就有非法字符怎么办?我遇到的就是从网上爬取数据的时候出现了这样的问题,居然有字符串出现了双引号没有转义(有些又是转义了的),还出现了换行符。我一直纠结不知道该怎么处理。今晚想到了一个办法,我发现JSON的合法双引号的出现都是有规律的,比如{"  ,:" ,",,这样的形式。然后我们可以先将这些合法的双引号用个特殊字符替代一下,比如我把 {"  替换为 {t ,然后再把替换完毕的字符串里面还剩的双引号全部去掉,这些剩下的双引号就是非法的了。我是把所有合法的双引号都用t表示了,现在只要把t转换为双引号就可以了。大致代码如下:

1
2
3
4
5
6
7
8
9
10
jsonString = jsonString.replaceAll("n","");
            jsonString = jsonString.replaceAll("{"","{t");
            jsonString = jsonString.replaceAll(""}","t}");
            jsonString = jsonString.replaceAll("":","t:");
            jsonString = jsonString.replaceAll("",","t,");
            jsonString = jsonString.replaceAll(","",",t");
            jsonString = jsonString.replaceAll(":"",":t");
            jsonString = jsonString.replaceAll(""",""");
            jsonString = jsonString.replaceAll("t",""");
            jsonString = jsonString.replaceAll("\","");
原文地址:https://www.cnblogs.com/lexus/p/2815948.html