Swift-デコード可能なオブジェクトを使用して、ネストされたオブジェクトをオブジェクトの配列に変換します

キラン

学生オブジェクトがある次の形式のJSONがあります。学生オブジェクトには、複数の学生がリストされています

Student {
    student1: {
        id: "12",
        name: "jack",
    },
    student2: {
        id: "2323",
        name: "lewis"
    },
    student3: {
        id: "1212",
        name: "pint"
    }
}

これを以下に示すような学生オブジェクトの配列に変換したいと思います。デコード可能を使用してこれを行うにはどうすればよいですか?

struct student: Decodable {
    let name: String
    let id: String
}
congnd

おそらくこれはあなたが望むものです:

let json = """
{
  "student": {
      "student1": {
          "id": "12",
          "name": "jack",
      },
      "student2": {
          "id": "2323",
          "name": "lewis"
      },
      "student3": {
          "id": "1212",
          "name": "pint"
      }
  }
}
"""

struct Student: Decodable {
  let id: String
  let name: String
}

struct StudentContainer: Decodable {
  let students: [Student]

  private enum CodingKeys: String, CodingKey {
      case student
  }

  init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
    let studentsDict = try container.decode([String: Student].self, forKey: .student)
    self.students = studentsDict.map { $0.value }
  }
}

let result = try? JSONDecoder().decode(StudentContainer.self, from: json.data(using: .utf8)!)

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

TOP 一覧

  1. 1

    三項演算子良い練習の代わりとしてOptional.ofNullableを使用していますか?

  2. 2

    STSでループプロセス「クラスパス通知の送信」のループを停止する方法

  3. 3

    Spring Boot Filter is not getting invoked if remove @component in fitler class

  4. 4

    セレンのモデルダイアログからテキストを抽出するにはどうすればよいですか?

  5. 5

    tkinterウィンドウを閉じてもPythonプログラムが終了しない

  6. 6

    Ansibleで複数行のシェルスクリプトを実行する方法

  7. 7

    Python / SciPyのピーク検出アルゴリズム

  8. 8

    画像変更コードを実行してもボタンの画像が変更されない

  9. 9

    ビュー用にサイズ変更した後の画像の高さと幅を取得する方法

  10. 10

    VisualStudioコードの特異点/ドッカー画像でPythonインタープリターを使用するにはどうすればよいですか?

  11. 11

    Three.js indexed BufferGeometry vs. InstancedBufferGeometry

  12. 12

    __init__。pyファイルの整理中に循環インポートエラーが発生しました

  13. 13

    二次導関数を数値計算するときの大きな誤差

  14. 14

    値間の一致を見つける最も簡単な方法は何ですか

  15. 15

    androidsoongビルドシステムによるネイティブコードカバレッジ

  16. 16

    Reactでclsxを使用する方法

  17. 17

    How to access json value by key value in freemarker?

  18. 18

    エンティティIDを含む@RequestBody属性をSpringの対応するエンティティに変換します

  19. 19

    PyTesseractを使用した背景色のため、スクリーンショットからテキストを読み取ることができません

  20. 20

    Using Angular's UI-router, how can we make sure the new version of the html partial views are used, rather than the cached version?

  21. 21

    symfonyエラーサーバーが404NotFoundを返しました

ホットタグ

アーカイブ