【问题标题】:Dynamic Response from Retrofit Json to Gson Android Kotlin/Java从改造 Json 到 Gson Android Kotlin/Java 的动态响应
【发布时间】:2019-01-07 18:14:50
【问题描述】:

我有来自 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()
                }

【问题讨论】:

    标签: java android kotlin retrofit


    【解决方案1】:

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

    class Value {
        List<Table> tables;
    }
    

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

    现在您可以使用泛型类型 T 而不是 Table 来更新 Value 类并编写您的自定义类型适配器:

    class Value {
        List<T> tables;
    } 
    

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

    【讨论】:

    • 谢谢,我只知道泛型类 T 可以是参数类 Data { ..... }
    猜你喜欢
    • 2020-06-07
    • 1970-01-01
    • 2018-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-08
    相关资源
    最近更新 更多