1

私は Scala と Scalatra の両方が初めてです。ふと気になったのですが、オブジェクト全体の検証の一環として、以下の画像のように、ネストされたオブジェクトを検証するために Scalatra コマンドをどのように使用しますか?

{ "id" : 1,
  "name" : "First item",
  "images": [
    { "src" : "first_image.jpg" },
    { "src" : "second_image.jpg" },
    { "src" : "third_image.jpg" }    
  ]
}
4

1 に答える 1

0

ソース コードから、単純な値のネストされた抽出のみがサポートされているようです。詳細は以下。

ネストされたパスを使用して、Json から値を抽出できます。

  val name: Field[String] = asType[String]("keyword.name")

これにより、この json から「test」が抽出されます。

{keyword:{name:'test'}}

この抽出のコードは、クラス org.scalatra.json.JsonValueReader で検索できます。このリーダーはメソッド org.scalatra.commands.Command.bindTo で使用されます。

重要なソースは次のとおりです。

...
      val result = b.field.valueSource match {
        case ValueSource.Body => fieldBinding(data.read(name).right.map(_ map (_.asInstanceOf[fieldBinding.S])))
...

「_.asInstanceOf[fieldBinding.S]」という呼び出しは、JValue オブジェクトで実現されます。この抽出は、単純な型に対してのみ機能します (この質問を確認してください: How to parse JSON in Scala using standard Scala classes? )。

于 2014-01-14T11:19:24.353 に答える