android - 忽略 json 中的元信息
问题描述
我正在使用带有 GsonConverterFactory 的 Retrofit(在 Android 上)。我从端点返回的json 中包含json 元信息。例如,响应如下所示:
{
meta:{"some meta information"},
data:{
address:{
meta:{"some other meta information"},
data:{
street: "Main Street",
zip: "99999",
state: "CA",
},
...
}
}
使用 Gson(通过 GsonConverterFactory),我的数据模型需要看起来像这样(在 Kotlin 中):
class Response(val data: Data1)
class Data1(val address: Address)
class Address(val Data2)
class Data2(val street: String, val zip: String, val state: String)
如您所见,如果它不是原始类型,则对象被包装在数据成员中。但是,我不想在我的数据模型类中到处包含这些数据对象。
有没有一种简单的方法可以“跳过”这些数据标签?我不想排除它们,只是直接包含它们里面的内容。例如,数据模型看起来像这样:
class Response(val address: Address)
class Address(val street: String, val zip: String, val state: String)
等效的 json 如下所示:
{
address:{
street: "Main Street",
zip: "99999",
state: "CA",
},
...
}
不幸的是,这不是端点传递 json 的方式。
有什么方法可以使用 Gson、Jackson 或其他可以在 Android 上运行的 json 解析器来实现这一点?
解决方案
为了实现您正在寻找的东西,最好的方法是编写一个 Gson 反序列化器。
推荐阅读
- kotlin - 将字段名称作为输入的 Corda 自定义查询
- apache-flink - 如何在开始时间和结束时间之间请求 Flink 作业指标?
- ruby-on-rails - sprockets 需要 Ruby 版本 >= 2.5.0 on rails 5
- php - PHP max 同时脚本调用...(调度程序?)不是 CRON
- c# - 如何使用 System.Text.Json 库在现有 json 中添加属性?
- django - 未登录时 Django 中间件扩展 self.request 错误
- sql - 使用外键关系更新从另一个表中选择的电子邮件
- java - 通过将输入(日期)作为字符串对日期进行排序
- swift - 当我附加一个值时,整个数组正在更改为附加值
- python - 结合 f 字符串和原始字符串文字