【问题标题】:Receiving malformed JSON with parenthesis on top layer在顶层接收带括号的格式错误的 JSON
【发布时间】:2017-10-05 16:01:54
【问题描述】:
[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"] 时,我什么也没有收到。

如何绕过顶层的括号并获取数据?

我正在使用 SwiftyJSON 来解析数据,这就是为什么它的格式与我的示例一样。

【问题讨论】:

  • 调试:json["branded"]nil?如果不是,json["branded"] 似乎是一个数组,而不是字典。所以json["branded"][0]["brand_name"]?
  • 非常感谢,我没有意识到 () 是一个数组。

标签: json swift api swift3 swifty-json


【解决方案1】:

假设您的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
        }
    }
}

【讨论】:

  • 问题是,从 JSON 转换为 [String:Any] 总是会失败
  • 我不会投射json。我正在转换从json["SUCCESS"] 获得的值。
猜你喜欢
  • 2019-08-08
  • 1970-01-01
  • 2013-09-28
  • 2012-08-10
  • 2017-02-22
  • 2017-06-20
  • 2021-03-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多