2017-11-01 1 views
0

私たちのコードから、いくつかのサービスが呼び出され、結果としてJSONが返されました。私は値を読み出すための再生APIを使用してきたJSON用のScala play api - 文字列化されたJSONからいくつかのケースクラスの配列を取得していますか?

[ 
{"id":33,"count":40000,"someOtherCount":0,"someString":"stuffHere"}, 
{"id":35,"count":23000,"someOtherCount":0,"someString":"blah"}, 
... 
] 

:3つのロングスと1つの文字列

例 - 文字列化JSONはそれに4つのフィールドを持っている「SomeItem」の配列のものです暗黙的な書き込み/読み取りを使用します。しかし、私はそれが配列のために働くようになっている問題を抱えています。

は例えば、私はSomeItemケースクラスの配列に変換し、応答のうち、値を解析しようとしてきたが、それは失敗しています:

val sanityCheckValue: JsValue: Json.parse(response.body) 
val Array[SomeItem] = Json.fromJson(sanityCheckValue) 

は私が

implicit val someItemReads = Json.reads[SomeItem] 
を持っています

しかし、動作していないようです。私はJson.reads [Array [SomeItem]]を設定しようとしましたが、運はありません。

これは機能しますか?どのようにこれを動作させるためのヒント?

答えて

2
import play.api.libs.json._ 

case class SomeItem(id: Long, count: Long, someOtherCount: Long, someString: String) 

object SomeItem { 
    implicit val format = Json.format[SomeItem] 
} 

object PlayJson { 
    def main(args: Array[String]): Unit = { 

    val strJson = 
    """ 
     |[ 
     | {"id":33,"count":40000,"someOtherCount":0,"someString":"stuffHere"}, 
     | {"id":35,"count":23000,"someOtherCount":0,"someString":"blah"} 
     |] 
    """.stripMargin 

    val listOfSomeItems: Array[SomeItem] = Json.parse(strJson).as[Array[SomeItem]] 

    listOfSomeItems.foreach(println) 

    } 

} 
関連する問題