2017-10-05 102 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

Debug:'json [「brand」]'nil?如果不是,'json [「brand」]'似乎是一個數組,而不是字典。所以'json [「brandded」] [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