1. 程式人生 > >Android解析帶轉義符的JSON

Android解析帶轉義符的JSON

最近幾天寫Android寫的有點兒癲瘋狀態,下午在獲取遠端伺服器的JSON字串兒的時候遇到了個問題,就是從伺服器返回的JSON帶了轉義符,也就是反斜槓,然後JSON就死活解析不了了,大致上返回來的是這個樣子的:


然後再Android中就直接原封不動的賦值給了一個字串兒變數,然後再用JSON解析的時候就錯了,解析不了,因為反斜槓不光反了斜槓,還特別反人類。。。但是,如果把頁面返回的結果整個兒拷貝出來,然後賦值給一個字串兒變數,解析就是完全正常的,所以百思不得其解,群內一個兄弟說,你這麼著吧,把反斜槓替換為空,然後掐頭去尾幹掉兩頭兒的引號,再重新賦值回去,應該就可以了。不過在此期間就是還犯了一個低階錯誤,就是直接在原先的字串兒上操作了,這個錯誤實在低階到無法忍受了,因為這幾天是python和java一塊兒寫,我還美滋滋的覺得我還能記得java的字串兒不同於python是可以原地操作的,就這我還巴巴的美呢!!結果被這哥們兒給鄙視了一下,說你來個中間變數啊,於是問題圓滿解決。

不過寫部落格不上程式碼也實在是無法忍受,程式碼簡單,直接就來個簡單的處理程式碼吧:

// 從伺服器端獲取Json字串
String backlogJsonStr = HttpUtils.getByHttpClient(Backlog.this,params[0]);
// 宣告中間變數進行處理
String backlogJsonStrTmp = backlogJsonStr.replace("\\", "");
// 處理完成後賦值回去
backlogJsonStr = backlogJsonStrTmp.substring(1,backlogJsonStrTmp.length() - 1);
// 這句程式碼就是為了檢驗效果的
System.out.println("result----------" + backlogJsonStr);
// 這裡用的是Google的GSON
Gson gson = new Gson();
// 這個Json是一個Array型別,即包含多個JSONObject物件,回頭我會抽時間專門寫個部落格來記錄這塊兒的東西
List<BacklogEntity> tmpBacklogList = gson.fromJson(backlogJsonStr, new TypeToken<List<BacklogEntity>>() {}.getType());
//接下來你可以做其他你想要做的操作
2013年11月22日,Eric.Tang 記