获取json解析错误org.json4s.package $ MappingException

时间:2018-12-02 06:41:11

标签: scala

我正在尝试将json提取元素解析为case类。只是好奇,为什么代码以一种方式而不是另一种方式运行。

此代码有效

import org.json4s._
import org.json4s.DefaultFormats
import org.json4s.jackson.JsonMethods.parse

object JsonCase {
  def main(args: Array[String]): Unit = {
    implicit val formats = DefaultFormats
    val input = """{"InputDB: "XYZ"}"""
    case class config(stagingDB: String)
    val spec = parse(input).extract[config]
    println(spec.stagingDB)
  }

}

为什么下面的代码不起作用

import org.json4s._
import org.json4s.DefaultFormats
import org.json4s.jackson.JsonMethods.parse

 implicit val formats = DefaultFormats
    val input = """{"stagingDB": "XYZ"}"""
    case class config(stagingDB: String)
    val spec = parse(input).extract[config]
    println(spec.stagingDB)

2 个答案:

答案 0 :(得分:0)

我发现事实恰恰相反。第二段代码有效,但是第一段代码失败,因为在input中引用错误。 "没有结束InputDB,因此它不是有效的JSON。

通常,在比较两个代码块时,应删除尽可能多的共享代码。因此configinputformats应该在object之外,并且在两个示例之间共享,这样您就可以知道自己专注于代码的差异而不是相似性。 / p>

答案 1 :(得分:0)

至少需要在对象/类级别定义所有内容(否则没有任何意义)。

下面是我想你想要的

object JsonCase {
    // This way it applies to the whole object
    implicit val formats = DefaultFormats 

    def main(args: Array[String]): Unit = {
      // do stuff
      ....