Kotlin-当非null属性未退出时,从JSON到类的避免序列化的力量失败



假设我们有此类:

  class Test(@SerializedName("Nullablefield")
             val nullable: Int?,
             @SerializedName("NonNullableField")
             val nonNullable: Int)

我们恢复了这个JSON:

{
    "Nullablefield": 3
}

如您所见,JSON中缺少非杂物,

使用gson((。fromjson方法属性变为null(即使属性定义为非null One(

我在执行此操作时使用不安全的方法阅读了有关GSON的信息。

在这种情况下,有没有办法使避风式化过程失败,而GSON或任何其他库?

我不想通过为字段分配默认值来解决它。

您可以使用Moshi库来解析JSON

import com.squareup.moshi.Json
import com.squareup.moshi.JsonClass
import com.squareup.moshi.Moshi
fun main() {
    val json = """
{
    "Nullablefield": 3
}        
    """.trimIndent()
    val moshi = Moshi.Builder().build()
    val adapter = moshi.adapter(Test::class.java)
    val test = adapter.fromJson(json)//will crash
    println(test)
}
@JsonClass(generateAdapter = true)
data class Test(
    @Json(name = "Nullablefield")
    val nullable: Int?,
    @Json(name = "NonNullableField")
    val nonNullable: Int
)

最新更新