2017-02-18 1 views
-2

キータイトルの文字列の配列をJSONレスポンス形式から取得します。 繰り返しまたはループを使用しないでください。JSONデータスウィフトのフィルタリング

[{ 
     "kind": "books#volume", 
     "id": "D7bKNFMXNOAC", 
     "volumeInfo": { 
      "title": "Apples", 
       "other":"Value" 
     } 
}, 
{ 
     "kind": "books#volume", 
     "id": “HGHGDKJSDKJH”, 
     "volumeInfo": { 
      "title": "Banana", 
       "other":"Value" 
     } 
}, 
{ 
     "kind": "books#volume", 
     "id": “JFHDFHKSHFD”, 
     "volumeInfo": { 
      "title": "Orange", 
       "other":"Value" 
     } 
}] 

Expecting:配列 - ["Apples"、 "Banana"、 "Orange"]。

+0

このJSONをどのように取得しようとしていますか? –

+0

'もしlet info = try? JSONSerialization.jsonObject(with:data as data){ // 3。応答 からすべてのアイテムを選択します。arrayAllRecords =(info as NSDictionary)?オブジェクト(forKey: "items")as! NSArray // 4。フィルタすべてのvolumeInfo Dictioanry let arrayVolumeInfo = arrayAllRecords.mutableArrayValue(forKey: "volumeInfo") // 5。フィルターを使用してすべてのタイトルを取得する titles = arrayVolumeInfo.mutableArrayValue(forKey: "title") } –

答えて

1

以下の例を参照してください。 flatMap funcを使って 'titles'の配列を取得できます。

let json = [ 
     [ 
      "kind": "books#volume", 
      "id": "D7bKNFMXNOAC", 
      "volumeInfo": [ 
       "title": "Apples", 
       "other":"Value" 
      ] 
     ], 
     [ 
      "kind": "books#volume", 
      "id": "HGHGDKJSDKJH", 
      "volumeInfo": [ 
       "title": "Banana", 
       "other":"Value" 
      ] 
     ], 
     [ 
      "kind": "books#volume", 
      "id": "JFHDFHKSHFD", 
      "volumeInfo": [ 
       "title": "Orange", 
       "other":"Value" 
      ] 
     ] 
    ] 

    let titles = json.flatMap { ($0["volumeInfo"] as! [String : Any])["title"] } 
    print(titles) //["Apples", "Banana", "Orange"] 
+0

ありがとう、Bhautik、 以下は私のためにも動作します。 '// 4。フィルタすべてのvolumeInfo Dictioanry let arrayVolumeInfo = arrayAllRecords.mutableArrayValue(forKey: "volumeInfo") // 5。すべてのタイトルを取得するためのフィルタ title = arrayVolumeInfo.mutableArrayValue(forKey: "title") ' –

関連する問題