使用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/