Scala使用json4s问题反序列化JSON

时间:2017-05-28 23:22:16

标签: scala json4s

当我使用以下简单代码反序列化JSON时使用json4s

package main.scala

import org.json4s._
import org.json4s.jackson.JsonMethods._

  object Main {

    case class Person(name: String, age: Int)

    def main(args: Array[String]): Unit = {
      val jsValue = parse("""{"name":"john", "age": 28}""")
      implicit val formats = DefaultFormats
      val p = jsValue.extract[Person]
    }
  }

发出以下错误。

  

线程中的异常" main" org.json4s.package $ MappingException:   scala.Predef $ .refArrayOps([Ljava /郎/对象;)Lscala /收集/可变/ ArrayOps;   不支持在函数体中定义的案例类。

有谁知道为什么会这样?

1 个答案:

答案 0 :(得分:1)

正如评论中所述,新版本已超越此限制。但是,您可以通过将case class定义移到main

之外来完成此工作
package main.scala

import org.json4s._
import org.json4s.jackson.JsonMethods._

// here!
case class Person(name: String, age: Int)

object Main {

  def main(args: Array[String]): Unit = {
    val jsValue = parse("""{"name":"john", "age": 28}""")
    implicit val formats = DefaultFormats
    val p = jsValue.extract[Person]
  }

}