从JsArray中提取Json属性值(播放)

时间:2015-11-12 16:49:12

标签: json scala playframework play-json

以下是我的scala代码中的代码段。我正在使用2.4。以下是我的"消息的输出" VAL。

import play.api.libs.json._

              .map{ _ match {
                  case (Some( message :JsArray  ), x) => {
                       println(      message  )
                       println((message \\ "collectorId").map(_.as[Int]))
                   }
               }
  

输出:

     

[" {\" ID为\":1,\" createdAt \":\" 2015-11-11T16:18:58.789 \ " \" collectorId \":4}&#34 ;,   " {\" ID为\":5,\" createdAt \":\" 2015-11-11T22:35:52.300 \" ,\" collectorId \":5}&#34 ;,   " {\" ID为\":2,\" createdAt \":\" 2015-11-11T16:21:05.377 \" ,\" collectorId \":4}&#34 ;,   " {\" ID为\":3,\" createdAt \":\" 2015-11-11T22:35:20.408 \" ,\" collectorId \":2}&#34 ;,   " {\" ID为\&#34:4,\" createdAt \":\" 2015-11-11T22:35:38.602 \" ,\" collectorId \":4}"]

     

ListBuffer()

如何提取

  

" collectorId"

值为Seq [Int]。当我执行代码时,我将其作为ListBuffer()。

我发现JsObject应该代替JsArray。

  

感谢支持人员。以下是我能够解决问题的方法。

case (Some( message :JsArray ), response ) => {
       (message \\ "collectorId").map{_ match { case JsNumber(s) =>  s.intValue() }
       }
}

1 个答案:

答案 0 :(得分:2)

使用

(message \\ "collectorId" map(_.as[Int]) toSeq
//> res0: Seq[Int] = List(4, 5, 4, 2, 4)

其中messageJArray