0

我试图将我的数据从 json 提取到一个案例类中,但没有成功。

json文件:

 [
  {
    "name": "bb",
    "loc": "sss",
    "elements": [
      {
        "name": "name1",
        "loc": "firstHere",
        "elements": []
      }
    ]
  },
  {
    "name": "ca",
    "loc": "sss",
    "elements": []
  }
]

我的代码:

      case class ElementContainer(name : String, location : String,elements : Seq[ElementContainer])
      object elementsFormatter  {
        implicit val elementFormatter = Json.format[ElementContainer]
      }

    object Applicationss extends App  {

      val el = new ElementContainer("name1", "firstHere", Seq.empty)
      val el1Cont = new ElementContainer("bb","sss", Seq(el))

      val source:String=Source.fromFile("src/bin/elementsTree.json").getLines.mkString
  val jsonFormat = Json.parse(source)
  val r1= Json.fromJson[ElementContainer](jsonFormat)
}

在运行这个我进入 r1 之后:

JsError(List((/elements,List(ValidationError(List(error.path.missing),WrappedArray()))), (/name,List(ValidationError(List(error.path.missing),WrappedArray())) ), (/location,List(ValidationError(List(error.path.missing),WrappedArray())))))

一直试图永远提取这些数据,请指教

4

1 回答 1

0

location相反loc,您需要将文件解析为 a ,Seq[ElementContainer]因为它是一个数组,而不是单个ElementContainer

Json.fromJson[Seq[ElementContainer]](jsonFormat)

此外,您还拥有validate将返回错误或解析的 json 对象的方法。

于 2016-07-14T14:40:45.500 回答