文書   >   Foundation   >   Archives and Serialization   >   カスタム型での JSON の使用


サンプルコード


カスタム型での JSON の使用


Swift のさまざまな種類の JSON をコード化および復号化するためのアプローチを示します。


Download





概観


他のアプリ、サービス、ファイルから送受信した JSON データには、さまざまな形や構造があります。このサンプルで説明する手法を使用して、外部 JSON データとアプリのモデルの型の違いを処理して下さい。


dc7deb59-69d4-482a-ab1e-50c533eaab3e


このサンプルは、単純なデータ型である GroceryProduct を定義し、いくつかの異なる JSON 形式からその型のインスタンスを構築する方法を示しています。


struct GroceryProduct: Codable {
    var name: String
    var points: Int
    var description: String?
}


配列からデータを読み込む


Swift の表現型システムを使用して、同一構造のオブジェクトのコレクションを手作業でループさせないようにします。このプレイグラウンドでは、配列型を値として使用して、以下のような構造の JSON を操作する方法を確認します。


[
    {
        "name": "Banana",
        "points": 200,
        "description": "A banana grown in Ecuador."
    }
]


キー名の変更


名前に関係なく、JSON キーからのデータをカスタム型のプロパティにマッピングする方法を学びましょう。たとえば、このプレイグラウンドでは、JSON の "product_name" キーを GroceryProductname プロパティにマッピングする方法を示します:


{
    "product_name": "Banana",
    "product_cost": 200,
    "description": "A banana grown in Ecuador."
}


カスタムマッピングを使用すると、JSON キーの名前が異なる場合でも、Swift API 設計ガイドライン を Swift モデルのプロパティの名前に適用できます。


入れ子になったデータにアクセスする


コードで必要としない JSON の構造とデータを無視する方法を学びましょう。このプレイグラウンドは中間の型を使用して、不要なデータや構造をスキップするために以下のようなJ SON からの食料品 (grocery products) を抽出する方法を見ていきます。


[
    {
        "name": "Home Town Market",
        "aisles": [
            {
                "name": "Produce",
                "shelves": [
                    {
                        "name": "Discount Produce",
                        "product": {
                            "name": "Banana",
                            "points": 200,
                            "description": "A banana that's perfectly ripe."
                        }
                    }
                ]
            }
        ]
    }
]


異なる深度でデータを結合する


Encodable および Decodable からのプロトコル要件のカスタム実装を記述することによって、JSON 構造体の異なる深度のデータを結合または分離します。このプレイグラウンドは、JSON から GroceryProduct インスタンスを作成する方法を以下のように示しています。


{
    "Banana": {
        "points": 200,
        "description": "A banana grown in Ecuador."
    }
}


以下も見よ





JSON





関連した文書





目次
Xcode の新機能

  • 言語:Swift
  • SDK:
  • Xcode 9.0+
  • フレームワーク
  • Foundation
  • 概観
  • 以下も見よ












  • トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)