0

JSONを考えると...

[ {"ID": "foo"}, {"ID": "bar"} ]

ケースクラスで表される...

case class Example(models: List[Model])
case class Model(id: String)

で失敗する次のことを試みますoverloaded method value read with alternatives

trait JsonReader {
  implicit val modelReads: Reads[Model] = (__ \ "name").read[String](Model)
  implicit val exampleReads: Reads[Example] = JsPath.read[List[Model]](Example)
  def get (response: Response) = response.json.as[Example]
}

これを解析する正しい方法は何ですか?

4

1 に答える 1

0

奇妙な理由で、値が 1 つしかない json モデルを読み取るエレガントなソリューションが見つかりませんでした。2 つ以上の値については、次のように記述できます。

implicit val reader = (
(__ \ 'id).read[Long] and
(__ \ 'field1).read[String] and
(__ \ 'field2).read[String])(YourModel.apply _)

1 つのフィールドを持つ json の場合、次のようなものを使用してみてください。

implicit val reader = new Reads[Model] {
    def reads(js: JsValue): JsResult[Model] = {
      JsSuccess(Model((js \ "name").as[String]))
    }
  }

これは機能するはずですが、見栄えがよくありません:(

于 2013-09-05T07:23:32.587 に答える