使用Alamofire框架时,我的回答似乎无法正确解析。我得到的JSON响应具有一些看起来不是字符串的键,并且我不知道如何引用它们/获取它们的值。

这是我的代码中进行调用的部分:

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)
  }
}

这是调用该函数时的第一部分打印输出
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";
      };
    ...
  });
});

您会注意到results不是"results",但是"price_per_adult"是正确的格式。我缺少一些步骤吗?当我将其转换为NSDictionary时,它也不会对密钥格式有所帮助。

我也在javascript和ruby中尝试了相同的终结点,并且都返回了没有问题的位置,因此我相当有信心,不是导致问题的API。

最佳答案

这些键仍然是String,这就是Dictionary就是println d的方式。看起来,仅当它包含非字母数字字符(在这种情况下为String)时,它才会在打印时用双引号引起来。您可以通过手动创建一个类似于从API请求中获取的_并进行打印来进行测试:

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)

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

关于ios - 在Swift中使用Alamofire解析JSON响应,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26237979/

10-12 14:30