2017-01-31 1 views
-3

에서 JSON을 구문 분석하는 동안 나는이있는 NSDictionary오류 SWIFT 2.3

{"fare":{"value":99.03,"fare_id":"12313545861568689494880005558558852","expires_at":1485864494,"display":"\u20b999.03","currency_code":"INR"},"trip":{"distance_unit":"mile","duration_estimate":720,"distance_estimate":2.76},"pickup_estimate":2} 

내 코드가 구문 분석하려고 :

if let statusesArray = try? NSJSONSerialization.JSONObjectWithData(data!, options: []) as? [[String: Any]], 
        let user = statusesArray![0]["fare"] as? [String: Any], 
        let username = user["fare_id"] as? String { 
        // Finally we got the username 
       } 
       else 
       { 
        print("DONE") 
       } 

을하지만 값 운임 ID를 받고 있지 않다. 실제로 그 else 문으로부터 "DONE"을 출력한다. 나는 데이터 처리 애플의 설명서를 사용하여 노력했지만, 같은 오류가 지속됩니다.

+3

이것은 배열이 아니며 사전입니다. – Moritz

+1

@NiravD가 이것을 해결할 올바른 방법을 게시했다고 생각합니다. –

+0

Eric Aya가 JSON이 최상위 레벨에서 사전이라는 것을 지적한 JSON 직렬화 부분 이외에 한 줄에 "3 if"테스트를 작성했기 때문에 문제가있는 곳을 알 수 없었습니다. 하지만 잘못 된 마지막 사용자 (사용자 이름) 일 수 있으며 사용자는이를 알지 못합니다. – Larme

답변

3

귀하의 JSON 응답하지 ArrayDictionary, 그래서 중첩 된 fare 사전에서 fare_id을 얻을 다음 [String:AnyObject]에 캐스팅 입력합니다.

if let dict = (try? NSJSONSerialization.JSONObjectWithData(data!, options: [])) as? [String: AnyObject], 
    let fareDict = dict["fare"] as? [String:AnyObject] 
    let username = fareDict["fare_id"] as? String { 
     print(username) 
} 
+0

매력처럼 작동합니다. –

+0

@ Jeesson_7 환영 메이트 :) –

관련 문제