2014-10-07 1 views
2

Alamofire Framework를 사용할 때 내 응답이 올바르게 구문 분석되지 않는 것 같습니다. JSON 응답에는 문자열이 아닌 것처럼 보이는 일부 키가 있으며이를 참조하는 방법/값을 얻는 방법을 알지 못합니다. 이 기능은 results이 아니라고Swatch에서 Alamofire로 JSON 응답 구문 분석

Optional({ 
    currency = USD; 
    results = ({ 
     fare = { 
     "price_per_adult" = { 
      tax = "245.43"; 
      "total_fare" = "721.43"; 
     }; 
     restrictions = { 
      "change_penalties" = 1; 
      refundable = 0; 
     }; 
     "total_price" = "721.43"; 
     }; 
    ... 
    }); 
}); 

당신은 알 수라고 첫 번째 섹션의 출력을

var url = "http://api.sandbox.amadeus.com/v1.2/flights/low-fare-search" 
var params = ["origin": "IST", 
     "destination":"BOS", 
     "departure_date":"2014-10-15", 
    "number_of_results": 1, 
       "apikey": KEY] 

Alamofire.request(.GET, url, parameters: params) 
    .responseJSON { (_, _, json, _) in 
    println(json) 
    } 
} 

그리고 여기에 있습니다 : 여기

는 호출을 내 코드의 일부이다 "results"이지만 "price_per_adult"은 올바른 형식입니다. 내가 누락 된 단계가 있습니까? NSDictionary로 캐스팅 할 때 키 형식을 돕기 위해 아무 것도하지 않습니다.

또한 javascript와 ruby에서 동일한 끝점을 시도했으며 문제없이 다시 돌아 왔으므로 문제가되는 API가 아닌 것으로 확신합니다.

답변

1

해당 키는 여전히 String입니다. Dictionaryprintln입니다. 영숫자가 아닌 문자 (이 경우 _)가 포함 된 경우에만 인쇄 할 때 String을 따옴표로 묶는 것처럼 보입니다.

let test = [ 
    "currency": "USD", 
    "results": [ 
     [ 
      "fare": [ 
       "price_per_adult": [ 
        "tax": "245.43", 
        "total_fare": "721.43" 
       ], 
       "restrictions": [ 
        "change_penalties": 1, 
        "refundable": 0 
       ], 
       "total_price": "721.43" 
      ] 
     ] 
    ] 
] 

println(test) 

출력 :`NSLog` /`에 println 이상

{ 
    currency = USD; 
    results = (
    { 
      fare = { 
       "price_per_adult" = { 
        tax = "245.43"; 
        "total_fare" = "721.43"; 
       }; 
       restrictions = { 
        "change_penalties" = 1; 
        refundable = 0; 
       }; 
       "total_price" = "721.43"; 
      }; 
     } 
    ); 
} 
+0

혼란을 수동을 인쇄 한 후 당신이 당신의 API 요청에서 다시 받고있어 비슷한 Dictionary을 만들고하여이를 테스트 할 수 있습니다 '의 표현이 유효하지 않다 JSON은 내가 여러 번 알아 차 렸던 것이다. 이 글을 문서화하거나 명확하게하는 방법에 대해 궁금해 할 것입니다 ... – mattt

+0

(최근에 NSData의 로깅 출력에 대해 혼란스러워하는 사람을 보았습니다. "텍스트를 원할 때 숫자를 얻는 이유는 무엇입니까?"는 공정성, 합리적인 질문) – mattt

+0

@mattt 그래, 꽤 많이 보았다. 문제의 일부는 SO를 검색하는 것이 어렵다는 것입니다. 어쩌면 더 나은 질문 제목이 도움이 될지 모르지만 나는 좋은 의견 제목을 공개적으로 생각할 수 없습니다. 관련 섹션 Alamofire (및 AFNetworking 's) README.md에서이 정보가 도움이 될 것이라는 메모를 남기고 싶습니다. 나는 그것이 그 도서관들과 아무 상관이 없다는 것을 알고 있으며 그것은 조금 밖에 어울리지 않을 것이지만, 그 도서관들이 매우 대중적이기 때문에이 문제에 가시성을 줄 것입니다. –