【问题标题】:Play framework 2.3.4 read JSON with variable number keys播放框架2.3.4 读取带有可变数字键的JSON
【发布时间】:2014-10-06 08:40:42
【问题描述】:

我正在使用 Play Framework 2.3.4,我正在尝试编写一个简单的隐式读取函数,该函数应该能够在 json 对象中获取任意数量的键并生成域对象的 Seq。

例如,JSON 可能如下所示:

{ "key1" : "value1", "key2" : "value2", ... "keyN" : "valueN" }

我有一个这样的域对象:

case class DomainObject(key: String, value: String)

我想用 Play JSON 写一些东西来产生一个 Seq[DomainObject]。

所以在这种情况下,如果我们只有两个键,我将有两个 DomainObjects 的 Seq,第一个带有 key = "key1" 和 value = "value1",第二个带有键 "key2" 和 value =“价值2”

感谢您的帮助。

【问题讨论】:

    标签: json scala playframework


    【解决方案1】:

    也许有一种方法可以创建好的作家来做到这一点,但简单的解决方案是:

    scala> val myJson = Json.parse("""{ "key1" : "value1", "key2" : "value2", "keyN" : "valueN" }""")
    myJson: play.api.libs.json.JsValue = {"key1":"value1","key2":"value2","keyN":"valueN"}
    
    scala> myJson.as[Map[String,String]] map {case (key, value) => DomainObject(key, value)}
    res8: scala.collection.immutable.Iterable[DomainObject] = List(DomainObject(key1,value1), DomainObject(key2,value2), DomainObject(keyN,valueN))
    

    您只需将其转换为 Map[String, String] (为此您有开箱即用的 writer),而不是构建一些复杂的 writer,然后将每个键值对映射到 DomainObject。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-01
      • 2018-01-03
      • 2015-02-19
      • 2018-01-11
      • 1970-01-01
      • 1970-01-01
      • 2016-05-03
      • 2013-03-22
      相关资源
      最近更新 更多