如何在scala播放中读取具有给定结构的json?

时间:2014-11-25 15:28:51

标签: json scala

我有一个像这样的json列表结构,我们如何读取这个结构并在scala中转换为列表,播放framwork。

{
"0":{
    "name":"Foo",
    "age":10
  },
"12":{
    "name":"Bar",
     "age":10
  }
  .
  .
  .
}

如果,有下面的json结构,我本可以轻松完成它,但由于我不是那么精通解析Json而且实际上也是scala的新手,我无法理解如何使用Json结构有关键作为" 0"," 12"就像在第一个例子中一样。我一直在使用Jerkson包装器来生成/解析json / case-class。

{
{"name":"Foo","age":10},
{"name":"Bar",age:11}
}

更新

除了Ryans回答之外,我实际上成功地解析了json结构,

import play.api.libs.json._

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

object Doodad {
  implicit val fmt = Json.format[Doodad]

def parserFuntion = {
var myJsValue: JsValue = Json.parse(jsonString)// added line in the ans
    var requiredMap = myJsValue.validate[Map[String, Doodad]]
}
    }

但是现在我有一个新问题,我使用的json结构似乎有点不规则,例如:

{
"0":{
    "name":"Foo",
    "age":10
  },
"12":{
    "name":"Bar",
    "age":10
  },
"13":{
    "name":"Foobar"
    "age":20,
    "meta":{
             "desc":"Irregular Json",
             "img":"Some Link"
           }
  },
      .
      .
      .
    }

有些json列表元素可能会有额外的" meta" key->值对,有些可能不对。那么,我们如何处理这种情况呢。任何想法??

1 个答案:

答案 0 :(得分:0)

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

object Doodad {
  implicit val fmt = Json.format[Doodad]
}

myJsValue.validate[Map[String, Doodad]] // JsResult[Map[String, Doodad]]