解析JSON-只解析成为Object 而不是bean

背景

有时候从后台获取到数据,但并不是所有的数据都是有必要解析的,有的只是后台传递给前端,再做其它请求的时候,又将数据原封不动的时候返回给后台。这个数据有时候只是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

做个记录,一点一点积累

为什么害怕改变,你在恐惧什么?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值