【问题标题】:scala json4s create json with optional/nullable field throws exceptionscala json4s 创建带有可选/可为空字段的 json 引发异常
【发布时间】:2016-08-14 09:31:25
【问题描述】:

我对 scala 和函数式编程相当陌生。我有这段代码是由使用json4s 库构建json的人编写的,

val json = "body" -> ...toList.map {
  case (title, attrs) =>
    ("name", tag) ~ ("attributes", attrs)
}
val finalJson = compact(render(json))

我看到这个就明白了,它构造了一个带有给定字段的 json。

如果attrs 有值,那么它会构造带有名称和属性的json 主体。 但是如果attrs 为空,那么我会遇到异常。

java.lang.NullPointerException:
  at org.json4s.JsonDSL$class.map2jvalue(JsonDSL.scala:71)
  at org.json4s.JsonDSL$.map2jvalue(JsonDSL.scala:61)

搜索了几个这样的帖子,但无法掌握如何让它工作。 我得到的最近的一个是this post

我想我必须使用NoneOption。如果我误解了某些东西,有关如何解决此问题的任何想法以及可能的解释都会非常有帮助。

【问题讨论】:

    标签: scala parser-combinators json4s


    【解决方案1】:

    您可以尝试使用 getOrElse,如下所示:

    val json = "body" -> ...toList.map {
    case (title, attrs) =>
    ("name", tag) ~ ("attributes", Option(attrs).getOrElse("")))
    }
    val finalJson = compact(render(json))
    

    【讨论】:

    • attrs 没有 getOrElse 方法。你能解释一下如何使用Option实现并在这里使用它吗?
    • 请参阅编辑。我假设 toList 方法在:“body”-> ...toList.map 生成元组,其中元组的第二个元素(attrs)可能是“null”
    猜你喜欢
    • 2020-07-20
    • 2015-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-19
    • 1970-01-01
    • 2016-05-03
    • 2020-12-16
    相关资源
    最近更新 更多