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