从json文件scala play中提取case类

时间:2016-07-14 14:28:12

标签: json scala play-json

我试图将我的数据从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(ValididationError(List(error.path.missing),WrappedArray())))))

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

1 个答案:

答案 0 :(得分:0)

您有location而不是loc,并且您需要将文件解析为Seq[ElementContainer],因为它是一个数组,而不是一个{{1} }}:

ElementContainer

另外,你有Json.fromJson[Seq[ElementContainer]](jsonFormat) 方法会返回错误或解析json对象..