改造Json对Gson Android Kotlin / Java的动态响应

时间:2019-01-07 02:30:10

标签: java android kotlin retrofit

我有来自Rest API的动态json格式,如下所示:

{
    "data": {
        "response_code": "success",
        "value": {
            "Table": [
                {
                    "id": 5,
                    "username": "blahblah",
                    "password": "blahblah",
                    "role": 2,
                    "email": "blah@tes.com",
                    "tanggal_buat": "2019-01-01T00:00:00"
                }
            ]
        }
    },
    "meta": {
        "http_status": 200
    }
}

对象“值”的对象数组名称为“表”。表可以包含我数据库中的值,这取决于我的查询。因此,有时json格式会更改,例如:

{
    "data": {
        "response_code": "success",
        "value": {
            "Table": [
                {
                    "id_product": 44,
                    "product": "blahblah",
                    "lot": "blahblah",
                    "qty": 2,
                }
            ]
        }
    },
    "meta": {
        "http_status": 200
    }
}

如何接受json值并使用“表”的不同子类直接分配给gson

我尝试翻新并使用Kotlin

override fun onResponse(call: Call<MainResp>, response: Response<MainResp>) {
                    mainResponse : MainResp = response.body()
                }

1 个答案:

答案 0 :(得分:0)

假设您拥有以下课程(使用诸如http://www.jsonschema2pojo.org/之类的东西):

class Value {
    List<Table> tables;
}

这里的“ Table”类不能完全是随机的!
您需要定义“表格”的可能类型,例如表1,表2 ...表N。

现在,您可以使用通用类型 T 代替Table更新Value类,并编写自定义类型适配器:

class Value {
    List<T> tables;
} 

here是有关如何编写自己的类型适配器的教程之一。