2017-10-05 1 views
0
[Data]: 10633 bytes 
[Result]: SUCCESS: { 
    branded =  (
       { 
      "brand_name" = "Pal's Sudden Service"; 
      "brand_name_item_name" = "Pal's Sudden Service Hotdog"; 
      "brand_type" = 1; 
      "food_name" = Hotdog; 
      "nf_calories" = 300; 
      "nix_brand_id" = 58769799a5bb96105b8fb337; 
      "nix_item_id" = c6402707666e81250cff44d4; 
      photo =    { 
       highres = "<null>"; 
       thumb = "https://d2eawub7utcl6.cloudfront.net/images/nix-apple-grey.png"; 

이 JSON 데이터를 구문 분석하려고하는데 어려움을 겪고 있습니다. 예를 들어 json["branded"]["brand_name"]과 같이 단순히 전화를 걸면 아무 것도받지 못합니다.상단 레이어에 괄호가있는 조작 된 JSON 수신

상단 레이어의 괄호 안의 데이터를 가져 오려면 어떻게해야합니까?

데이터를 구문 분석하기 위해 SwiftyJSON을 사용하고 있는데, 이것이 내 예제와 같은 형식입니다.

+1

디버그 :'json [ "branded"]'nil입니까? 그렇지 않다면, json [ "branded"]'는 사전이 아닌 배열 인 것처럼 보인다. 그래서'json [ "branded"] [0] [ "brand_name"]'? – Larme

+1

고맙습니다. 배열을 알았습니다. –

답변

0

귀하의 json 변수가 귀하의 질문에 [RESULT]:에 표시되는 것으로 가정하면 먼저 "SUCCESS" 키의 값을 가져와야합니다. 그런 다음 "branded" 키의 값을 가져올 수 있습니다. 그 결과는 배열입니다. JSON의 괄호는 배열을 의미합니다. 아무것도 잘못된 형식입니다.

if let success = json["SUCCESS"] as? [String:Any] { 
    if let branded = success["branded"] as? [[String:Any]] { 
     for brand in branded { 
      let brandName = brand["brand_name"] as! String 
     } 
    } 
} 
+0

JSON에서 [String : Any]로 캐스트하면 항상 실패합니다. –

+0

'json'을 캐스팅하지 않았습니다. 'json [ "SUCCESS"]'에서 얻은 값을 캐스팅합니다. – rmaddy