當fastJson邂逅大寫欄位時,fastjson邂逅大寫
在項目中遇到了一件令人頭疼的事。使用fastJson還原序列化時下面的Json時,得到對象屬性總為null(如),可能細心的朋友一看就知道問題出在哪裡,沒錯!問題就出在返回的欄位首字母給大寫了。fastJson解析的是利用反射通過setXxx()為對象賦值,這也就是為什麼我們的javabean必須提價getXxx()和setXxx()方法的原因。
知道了問題出在哪裡,就得想辦法解決。首先想到的是百度,可是一陣之後未果。資料庫及服務端都不是自己做,改資料庫及服務端都不現實,只有在android上考慮,服務端做也就是把返回的Json欄位的首字母弄小寫,或改資料表裡的欄位,好吧,說到這裡,也就不賣關子了,解決方案很簡單,直接給Json字串toLowerCase()一把再轉換成JsonObject,這時javabean就可以統統用小寫處理。
關鍵代碼:JSONObject jObject = new JSONObject(resource.toLowerCase(Locale.getDefault()));
{ "res": "1", "index_banner": [ { "Ad_Name": "手機滾動大圖一", "Ad_Link": "/huodong/fabuhui.html", "Ad_Code": "/UpLoads/image/20140910/20140910172048_31579.jpg" }, { "Ad_Name": "手機滾動切換五", "Ad_Link": "http://m.toptuu.com/Huodong/danye.html", "Ad_Code": "/UpLoads/image/20140906/20140906084953_94943.jpg" }, { "Ad_Name": "手機滾動切換四", "Ad_Link": "/Huodong/dingzhi.html", "Ad_Code": "/UpLoads/image/20140906/20140906085053_90516.jpg" }, { "Ad_Name": "手機滾動切換三", "Ad_Link": "/Huodong/jiu.html", "Ad_Code": "/UpLoads/image/20140906/20140906085138_32961.jpg" }, { "Ad_Name": "手機滾動大圖二", "Ad_Link": "/huodong/jy.html", "Ad_Code": "/UpLoads/image/20140910/20140910152954_72484.jpg" }, { "Ad_Name": "手機切換0", "Ad_Link": "/Huodong/xifeng.html", "Ad_Code": "/UpLoads/image/20140830/20140830115112_40561.jpg" } ]}
解決方案很簡單,但是確實讓我琢磨了很久,只要是問題就值得記錄下來,總會幫到別人的。
fastjson 過濾多餘的欄位
SimplePropertyPreFilter filter = new SimplePropertyPreFilter(實體類.class, "欄位名","欄位名");
JSON.toJSONString(list, filter);
fastjson解析JSON問題
syntax error pos 2第二個關鍵詞位置格式錯誤