【问题标题】:How can I parse JSON such that if the structure is not as I intended it gracefully fails?如何解析 JSON,以便如果结构不符合我的预期,它会优雅地失败?
【发布时间】:2019-10-31 04:20:51
【问题描述】:

参考:https://bytes.babbel.com/en/articles/2018-05-25-kotlin-gson-nullability.html

本文讨论了 GSON 与 Kotlin 的缺点之一。如果我们有这样的数据类并尝试破坏它:

data class User(
    val email: String,
    val firstName: String)

fun main(args: Array<String>) {
  val json = """{
    "email": null
    }"""
  val gson = Gson()

  println(gson.fromJson(json, User::class.java).email)
}

一旦我们解析它并使用email 字段,我们就会返回一个NullPointerException。这是 GSON 的预期行为。

是否有一个库可以给我一个像IllegalStateException 这样的错误并验证哪个字段应该可以为空?或者,有没有办法解决 MoshiGSON 或任何其他 JSON 库,以便我可以得到这样的错误?

【问题讨论】:

标签: android json kotlin deserialization


【解决方案1】:

如果缺少字段,Gson 不会给出 NullPointerException。它只是忽略对象的缺失字段。有关更多详细信息,我会要求您与异常和代码共享错误日志。

【讨论】:

  • 如果我反序列化我提供的示例 JSON 并尝试调用 User.email,我将收到 NullPointerException,但由于我使用的是 Kotlin,这应该是一个非法状态,因为我没有定义我的属性是可选的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-16
  • 1970-01-01
  • 2011-05-07
  • 1970-01-01
  • 2017-01-03
  • 1970-01-01
相关资源
最近更新 更多