解析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

相關文章
相關標籤/搜索