解析JSON-只解析成為Object 而不是bean
阿新 • • 發佈:2018-11-19
背景
有時候從後臺獲取到資料,但並不是所有的資料都是有必要解析的,有的只是後臺傳遞給前端,再做其它請求的時候,又將資料原封不動的時候返回給後臺。這個資料有時候只是key相同,但是實際的值相差很大的。當我們如果是借用諸如Gson來解析的時候就會出問題。
{ "type":"chart", "title":"", "subTitle":"", "createDate":"2018-09-18 11:12:49", "remarks":"2018-9-18-日報", "loadUrl":"http://xiaohe/chart-container.html", "content":"2018-9-18-日報", "gotoParams":{ "designId":"824797985020462835", "id":"548847611631325018" } }
如上圖中的json ,其中的gotoParams就是之後會返回給伺服器端資料。如果要解析,那麼一般會定義兩個bean,其中一個是GotoParams 。但是問題是gotoParams中的資料是不確定的,有時候三個,有時候四個。這樣就沒有辦法定義準確的bean
我們先看看我先定義的兩種錯誤bean(使用的kotlin定義的資料類)
1、定義gotoParams為String
data class ChartMessage(val type: String, val title: String, val subTitle: String, val createDate: String?, val remarks: String, val loadUrl: String, val content: String, val gotoParams: String)
這個時候解析報錯,說解析的對應的是一個object,而不是String
2、定義gotoParams為JSONObejct
data class ChartMessage(val type: String, val title: String, val subTitle: String, val createDate: String?, val remarks: String, val loadUrl: String, val content: String, val gotoParams: JSONObject)
這個時候,到是沒有報錯,只是對應的gotoParams 是空的字串。不符合
解決方案
data class ChartMessage(val type: String, val title: String, val subTitle: String,
val createDate: String?, val remarks: String, val loadUrl: String,
val content: String, val gotoParams: Any)
Any 是kotlin 中的基類, 對應的是java中的Object
做個記錄,一點一點積累
為什麼害怕改變,你在恐懼什麼?