【问题标题】:How to set default value of not exposed parameter with GSON如何使用 GSON 设置未公开参数的默认值
【发布时间】:2020-05-13 14:59:57
【问题描述】:

我正在尝试通过 GSON 使用改造来解析 Kotlin 中的这种 json:

{
     "status":"ready"
     "users":
     [
         {
            "full_name":"user1",
            "id":1
         },
         {
            "full_name":"user2",
            "id":2
         }
     ]
}

我需要获取用户列表,因此我有一个改造请求,以获取以这种方式定义的类的实例:

data class Info(var status:String, var users : List<User>)

这是请求:

@GET("info")
fun getInfo(): Flowable<Info>

这是用户类:

data class User (val full_name:String = "",
                 val id:Int = 0)

问题是当全名不在json中时,用户的全名字段设置为null而不是“”。

含义:默认值被忽略。

但是,如果我将信息字段“status”的默认值设置为“”,它会起作用:当 json 中未定义状态时,创建的 Info 实例将其参数“status”设置为“”

我做错了什么?

谢谢

【问题讨论】:

    标签: kotlin gson


    【解决方案1】:

    事实证明,我给出的示例是有效的。 在我的实际代码中,我没有初始化所有变量......似乎是 GSON 的问题......

    TL;DR 如果您希望 GSON 考虑默认值,则必须设置所有公开的变量默认值

    【讨论】:

    • 谢谢,我仍然不明白他们为什么要这样实现它。浪费了一个小时试图了解我做错了什么。
    猜你喜欢
    • 2013-10-15
    • 2018-07-21
    • 1970-01-01
    • 1970-01-01
    • 2019-03-26
    • 1970-01-01
    • 1970-01-01
    • 2015-10-12
    • 2019-10-22
    相关资源
    最近更新 更多