2017-02-18 1 views
-2

Wollen Sie das Array von Zeichenfolgen für einen Schlüsseltitel von unten JSON-Antwortformat erhalten. Ich möchte keine Iteration oder Schleife verwenden.Filter JSON Data Swift

Erwartet: Array - ["Äpfel", "Banana", "Orange"].

+0

Zeigen Sie uns, was Sie versucht haben, Wie Sie diese JSON bekommen. –

+0

'wenn lassen Sie info = versuchen? JSONSerialization.jsonObject (mit: Daten als Daten) { // 3. Wählen Sie alle Elemente aus der Antwort lost arrayAllRecords = (info als? NSDictionary) ?. object (forKey: "items") as! NSArray // 4. Filter all volumeInfo Dictionary Lassen Sie arrayVolumeInfo = arrayAllRecords.mutableArrayValue (forKey: "volumeInfo") // 5. Filter, um alle Titel zu erhalten titles = arrayVolumeInfo.mutableArrayValue (forKey: "title") } ' –

Antwort

1

Siehe das folgende Beispiel. Sie können Array von 'Titeln' mit flatMap Func erhalten.

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

Danke, Bhaustik, Unten auch für mich arbeiten. '// 4. Filter all volumeInfo Dictionary Lassen Sie arrayVolumeInfo = arrayAllRecords.mutableArrayValue (forKey: "volumeInfo") // 5. Filter, um alle Titel zu erhalten titles = arrayVolumeInfo.mutableArrayValue (forKey: "title") ' –