解析JSON数据时,数据中有/r/n 导致解析失败

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

本人博客地址:http://my.oschina.net/lijindou/blog

转载请标明原址:http://my.oschina.net/lijindou/blog/736526

昨天解析后台返回的数据的时候,我发现我用GSON 解析JSON 数据的时候,有一块数据总是解析不完整,然后整了一下午没整好,今天早上,来了整整,发现 我的 数据中有 /r/n, 然后我将其删除了,发现解析正常了,啊哈,问题找到了,上网查了查原因,如下:

在windows平台下换行符是 /r/n ,而在linux,android平台下换行符是 /n   ,所以取得的JSON字符串必须进行过滤,将/r/n替换成/n

所以,我们拿到JSON数据后,先用下面的方法过滤下,然后在解析

/**
     * 将JSON数据中的 /r/n 替换 为 /n
     */
    public String JsonFilter(String jsonstr) {
        jsonstr = jsonstr.replace("\\r\\n", "\\n");
//        jsonstr=jsonstr.replace("\\r\\n\\r\\n", "\\n");
        return jsonstr;
    }

这块的原理很简单,就是用到了String这个类的replace()这个方法

JDK文档:

replace

public String replace(char oldChar,
                      char newChar)

返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。

如果 oldChar 在此 String 对象表示的字符序列中没有出现,则返回对此 String 对象的引用。否则,创建一个新的 String 对象,它所表示的字符序列除了所有的 oldChar 都被替换为 newChar 之外,与此String 对象表示的字符序列相同。

示例:

"mesquite in your cellar".replace('e', 'o')
         returns "mosquito in your collar"
 "the war of baronets".replace('r', 'y')
         returns "the way of bayonets"
 "sparring with a purple porpoise".replace('p', 't')
         returns "starring with a turtle tortoise"
 "JonL".replace('q', 'x') returns "JonL" (no change)

 

参数:

oldChar - 原字符。

newChar - 新字符。

返回:

一个从此字符串派生的字符串,它将此字符串中的所有 oldChar 替代为 newChar

转载于:https://my.oschina.net/lijindou/blog/736526

你可能感兴趣的:(解析JSON数据时,数据中有/r/n 导致解析失败)