回答編集履歴
1
追記
    
        answer	
    CHANGED
    
    | @@ -8,4 +8,64 @@ | |
| 8 8 | 
             
            たとえば、下記のような感じです(ダウンキャストは必要に応じて施して頂けますでしょうか)。
         | 
| 9 9 | 
             
            ```swift
         | 
| 10 10 | 
             
            let data1 = data.value
         | 
| 11 | 
            +
            ```
         | 
| 12 | 
            +
             | 
| 13 | 
            +
            ---
         | 
| 14 | 
            +
             | 
| 15 | 
            +
            辞書からの値の取得ですが、たぶん難しく考えすぎていらっしゃるのではないでしょうか。
         | 
| 16 | 
            +
            JSONのデータから `hits` をキーに取得されている処理は行われているので、同じように考えれば大丈夫です。
         | 
| 17 | 
            +
             | 
| 18 | 
            +
            ```swift
         | 
| 19 | 
            +
            / JSON の代わり
         | 
| 20 | 
            +
            let jsonData = ["hits": ["data1": "いち", "data2": "に", "data3":"さん"]]
         | 
| 21 | 
            +
            print(jsonData) //←コンソールに①の形式で表示される
         | 
| 22 | 
            +
             | 
| 23 | 
            +
            //hitsの中身を全て取得したい
         | 
| 24 | 
            +
            let productsData:[String:Any] = jsonData["hits"] ?? ["":""]
         | 
| 25 | 
            +
            print(productsData) //←コンソールに②の形式で表示される
         | 
| 26 | 
            +
             | 
| 27 | 
            +
            //取得した中身の数だけ各項目の値を取得したい
         | 
| 28 | 
            +
            let data1 = productsData["data1"]
         | 
| 29 | 
            +
            let data2 = productsData["data2"]
         | 
| 30 | 
            +
            let data3 = productsData["data3"]
         | 
| 31 | 
            +
            print(data1)
         | 
| 32 | 
            +
            print(data2)
         | 
| 33 | 
            +
            print(data3)
         | 
| 34 | 
            +
            ```
         | 
| 35 | 
            +
            気をつけなければいけないのは、辞書から得られる値は `Optional` 型という点です(キーに相当する値がない場合 `nil` を返す)。
         | 
| 36 | 
            +
             | 
| 37 | 
            +
            ---
         | 
| 38 | 
            +
            あるいは、Swift4 以降であれば `Codable` を使うという手もあります。
         | 
| 39 | 
            +
            こちらはあらかじめ `Codable` に準拠した構造体を作っておく必要がありますが、取得する JSON の構造が決まっているのであれば、プロパティ名でアクセスできるため取扱い(特に、JSONからのデコード)が容易になります。
         | 
| 40 | 
            +
             | 
| 41 | 
            +
            ```swift
         | 
| 42 | 
            +
            let data = """
         | 
| 43 | 
            +
            {
         | 
| 44 | 
            +
                "hits" : {
         | 
| 45 | 
            +
                    "data1": "いち",
         | 
| 46 | 
            +
                    "data2": "に",
         | 
| 47 | 
            +
                    "data3": "さん"
         | 
| 48 | 
            +
                }
         | 
| 49 | 
            +
            }
         | 
| 50 | 
            +
            """.data(using: .utf8)!
         | 
| 51 | 
            +
             | 
| 52 | 
            +
            struct jsonStruct: Codable {
         | 
| 53 | 
            +
                var hits: Hits
         | 
| 54 | 
            +
            }
         | 
| 55 | 
            +
             | 
| 56 | 
            +
            struct Hits: Codable {
         | 
| 57 | 
            +
                var data1: String
         | 
| 58 | 
            +
                var data2: String
         | 
| 59 | 
            +
                var data3: String
         | 
| 60 | 
            +
            }
         | 
| 61 | 
            +
             | 
| 62 | 
            +
            // この一行で終わり
         | 
| 63 | 
            +
            let item = try! JSONDecoder().decode(jsonStruct.self, from: data)
         | 
| 64 | 
            +
             | 
| 65 | 
            +
            let data1 = item.hits.data1
         | 
| 66 | 
            +
            let data2 = item.hits.data2
         | 
| 67 | 
            +
            let data3 = item.hits.data3
         | 
| 68 | 
            +
            print(data1)
         | 
| 69 | 
            +
            print(data2)
         | 
| 70 | 
            +
            print(data3)
         | 
| 11 71 | 
             
            ```
         | 
