背景
有时候从后台获取到数据,但并不是所有的数据都是有必要解析的,有的只是后台传递给前端,再做其它请求的时候,又将数据原封不动的时候返回给后台。这个数据有时候只是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
做个记录,一点一点积累
为什么害怕改变,你在恐惧什么?