java - 从改造 Json 到 Gson Android Kotlin/Java 的动态响应
问题描述
我有来自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()
}
解决方案
假设您有以下课程(使用诸如http://www.jsonschema2pojo.org/之类的东西):
class Value {
List<Table> tables;
}
这里的“Table”类不能完全随机!
您需要定义“表”的可能类型,例如 Table1、Table2...TableN。
现在您可以Value
使用通用类型T而不是 Table 更新类并编写自定义类型适配器:
class Value {
List<T> tables;
}
关于如何编写自己的类型适配器的教程之一是这里。
推荐阅读
- excel - Excel在数组中返回多个部分字符串匹配
- css - 使用 :focus-within 时单击 :hover 元素中的链接会卡住
- javascript - Firebase 从已删除数据中删除孤立数据
- php - 在页面加载时执行 php 短代码
- php - php - 不能将 PDOStatement 类型的对象用作带有 Google Cloud Messaging 的数组
- c# - FileSystemWatcher 和计时器一起使用
- python - pip install mysqlclient 在 Ubuntu 上使用 docker 上的 python 2.7 失败
- java - 何时使用 concurrenthashmap 与 hashmap 进行 put 和 get
- multithreading - LOCK 前缀是否必须以线程安全的方式修改字节长度变量?
- python - python'NoneType'对象中的音乐不和谐机器人错误没有属性'create_ytdl_player'