如何使用 GSON 设置未公开参数的默认值
How to set default value of not exposed parameter with GSON
我正在尝试通过 GSON 使用改造来解析 Kotlin 中的这种 json:
{
"status":"ready"
"users":
[
{
"full_name":"user1",
"id":1
},
{
"full_name":"user2",
"id":2
}
]
}
我需要获取用户列表,所以我有一个改造请求,以获取 class 的实例,这样定义:
data class Info(var status:String, var users : List<User>)
请求如下:
@GET("info")
fun getInfo(): Flowable<Info>
这是用户 class :
data class User (val full_name:String = "",
val id:Int = 0)
问题是当 full_name 不在 json 中时,用户的字段 full_name 被设置为 null 而不是 ""。
含义:忽略默认值。
但是,如果我将信息字段的默认值 "status" 设置为“”,它会起作用:当状态未在 json 中定义时,创建的信息实例具有其参数 "status" 设置为“”
我做错了什么?
谢谢
原来我给出的例子是有效的。
在我的实际代码中,我没有初始化所有变量...似乎是 GSON 的问题...
长话短说;博士
如果你想让 GSON 考虑默认值,你必须设置所有暴露的变量默认值
我正在尝试通过 GSON 使用改造来解析 Kotlin 中的这种 json:
{
"status":"ready"
"users":
[
{
"full_name":"user1",
"id":1
},
{
"full_name":"user2",
"id":2
}
]
}
我需要获取用户列表,所以我有一个改造请求,以获取 class 的实例,这样定义:
data class Info(var status:String, var users : List<User>)
请求如下:
@GET("info")
fun getInfo(): Flowable<Info>
这是用户 class :
data class User (val full_name:String = "",
val id:Int = 0)
问题是当 full_name 不在 json 中时,用户的字段 full_name 被设置为 null 而不是 ""。
含义:忽略默认值。
但是,如果我将信息字段的默认值 "status" 设置为“”,它会起作用:当状态未在 json 中定义时,创建的信息实例具有其参数 "status" 设置为“”
我做错了什么?
谢谢
原来我给出的例子是有效的。 在我的实际代码中,我没有初始化所有变量...似乎是 GSON 的问题...
长话短说;博士 如果你想让 GSON 考虑默认值,你必须设置所有暴露的变量默认值