天天看点

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

本人博客地址: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