在項目中遇到了一件令人頭疼的事。使用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"
}
]
}
解決方法很簡單,但是確實讓我琢磨了很久,只要是問題就值得記錄下來,總會幫到別人的。