假设我们有此类:
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
)