2016-12-05 3 views
0

이미이 게시물에 대한 이야기가 있지만 여전히 내 문제를 파악할 수 없습니다.Swift에서 배열에 중첩 된 JSON

데이터베이스에 액세스하고 있으며 응답을 JSON 객체로 변환 중입니다.이 부분이 정상적으로 작동하고 있습니다. 여기에 대한 코드가 있습니다. joArray에 지금 필요한 데이터가 있습니다.

//Convert data to json object 
let joArray : NSArray 
do { 
    joArray = try JSONSerialization.jsonObject(with: data, options: []) as! NSArray 
} 
catch { 
    print(responseString) 
    print("error trying to convert data to JSON") 
    return 
} 

내가 인쇄 할 경우 joArray. . .

print(joArray) 

. . . 이것이 내가 얻는 것입니다.

(
     { 
     FirstName = Bob; 
    }, 
     { 
     FirstName = Bill; 
    } 
) 

이 데이터를 어떻게 신속한 배열에 넣을 수 있습니까?

let FirstNameArray = ["Bob", "Bill"] 

이름은 항상 같은 위치에 있지만 사용자 수 (Bob, Bill, Mary 등)가 다양합니다.

+1

정확한 JSON을 모른 채 jugde하기가 어렵습니다. 귀하의 인쇄물은 그 중 일부일뿐입니다. 당신은 사전의 배열을 얻을. 배열을 원하는 형식으로''(평평하게) 매핑해야합니다. 사이드 노트 : ** Swift에서 NSArray를 사용하지 마십시오. 중요한 유형 정보를 버리면 강력한 유형 시스템을 무 찌르십시오. 네이티브'Array' 사용 – vadian

답변

2

네이티브 스위프트 배열을 대신 사용하면 더 편하게 생활 할 수 있습니다. 지정된 배열 항목이 없을 수도 있기 때문에,

let FirstNameArray = swiftArray.flatMap { $0["FirstName"] } 

당신은 map보다는, flatMap를 사용한다 : 그래서, 당신의 배열 정의 변경하여 시작 : 이제

let joArray: [[String: Any]] 
do { 
    joArray = try JSONSerialization.jsonObject(with: data, options: []) as! [[String: Any]] 
} catch { 
    // etc... 
} 

을, 그것은 필요한 배열을 구성하기 위해 간단합니다 "FirstName"이라는 속성