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

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

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

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

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

因此,咱们拿到JSON数据后,先用下面的方法过滤下,而后在解析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()这个方法windows

JDK文档:api

replace

public String replace(char oldChar,
                      char newChar)

返回一个新的字符串,它是经过用 newChar 替换此字符串中出现的全部 oldChar 获得的。ui

若是 oldChar 在此 String 对象表示的字符序列中没有出现,则返回对此 String 对象的引用。不然,建立一个新的 String 对象,它所表示的字符序列除了全部的 oldChar 都被替换为 newChar 以外,与此String 对象表示的字符序列相同。spa

示例:.net

"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

相关文章
相关标签/搜索