7

次の JSON を解析しようとして、Scala と Argonaut を使用しています。

[
    {
        "name": "apple",
        "type": "fruit",
        "size": 3
    },
    {
        "name": "jam",
        "type": "condiment",
        "size": 5
    },
    {
        "name": "beef",
        "type": "meat",
        "size": 1
    }
]

そして、名前、型、およびサイズのプロパティを持つList[MyType]場所に値を反復して抽出する方法を見つけるのに苦労しています。MyType

より具体的なコードをすぐに投稿します (私は多くのことを試しました) が、基本的には、カーソルがどのように機能するか、配列などを反復処理する方法を理解しようとしています\\。配列:->-を反復処理する場合、--\(downField) は使用できません (少なくとも IntelliJ はそうは考えていません)。だから問題はどうすればいいですか:

  • 配列に移動します
  • 配列を反復処理します (完了したことを認識します)
  • 各フィールドの文字列、整数などの値を抽出します - jdecode[String]? as[String]?
4

3 に答える 3

0

エンコードする必要はなく、デコードのみを見ているので、Travis が提案したように行うことができますが、別の暗黙的な MyTypeDecodeJson を実装することによって行うことができます。

implicit def MyTypeDecodeJson: DecodeJson[MyType] = DecodeJson(
    raw => for {
    name     <- raw.get[String]("name")
    type     <- raw.get[String]("type")
    size     <- raw.get[Int]("size")
  } yield MyType(name, type, size))

次に、リストを解析します。

Parse.decodeValidation[List[MyType]](jsonString)
于 2016-02-09T08:15:41.463 に答える