首页 > 解决方案 > 忽略 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 解析器来实现这一点?

标签: androidjsonkotlingsonretrofit

解决方案


为了实现您正在寻找的东西,最好的方法是编写一个 Gson 反序列化器。


推荐阅读