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" 
     } 
}] 

기대 : 배열 - [ "사과", "바나나", "오렌지"].

+0

어떻게이 JSON을 얻었는지 보여주세요. –

+0

'let info = try? JSONSerialization.jsonObject (with : Data as Data) { // 3. 응답에서 모든 항목을 골라 내십시오 arrayAllRecords = (info as NSDictionary)? object (forKey : "items") as! NSArray // 4. 필터 all volumeInfo Dictioanry 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. 필터 all volumeInfo Dictioanry arrayVolumeInfo = arrayAllRecords.mutableArrayValue (forKey : "volumeInfo") // 5로 지정합니다. 모든 제목을 가져 오기위한 필터 titles = arrayVolumeInfo.mutableArrayValue (forKey : "title")' –