使用 Alamofire 从 Firebase 检索 JSON
Posted
技术标签:
【中文标题】使用 Alamofire 从 Firebase 检索 JSON【英文标题】:Retrieve JSON from Firebase with Alamofire 【发布时间】:2018-04-17 19:08:55 【问题描述】:这是我的代码:
let urlWithId = url + buildingInfo.building.identifier + ".json"
Alamofire.request(urlWithId).responseJSON (response) in
print(response.result.value)
当打印 Any? 类型的值时,我得到这个:
Optional(<__NSArrayI 0x123456789012>(
<null>,
aaa = 111;
bbb = "bbb";
ccc = 000;
ddd = "ddd";
eee = (
a,
b,
c
);
)
)
这应该可以工作,但总是返回 nil:
if let value = response.result.value as? NSDictionary
// Never gets into here, always nil
我想要一个 JSON:
aaa:无符号长 bbb:字符串 ccc:无符号长 ddd:字符串 eee:json如果我在 Safari 中执行请求,我会得到:
[
null,
"aaa":111,
"bbb":"bbb",
"ccc":000,
"ddd":"ddd",
"eee":[
"a",
"b",
"c"
]
]
有什么想法吗?也许是另一种使用 Firebase URL 请求 json 的方式
【问题讨论】:
您的数据库firebase有问题,请添加您的数据库截图 【参考方案1】:我可以看到 JSON 响应,您没有得到字典,而是得到数组。您需要在索引1
中回复。所以解析为:
在您的响应 JSON 数组中:
索引 0 = null
索引 1 = 数组
将您的代码更新为:
if let value = response.result.value as? [Any], let dict = value[1] as? [String: Any]
print(dict)
【讨论】:
[“aaa”:111,“bbb”:bbb,“ccc”:000,“eee”:<__nsarrayi>(a,b,c),“ddd”:ddd] 【参考方案2】:请试试这个:
switch response.result
case .success(let data):
debugPrint("\n Success: \(data)")
case .failure(let error):
debugPrint("\n Failure: \(error.localizedDescription)")
【讨论】:
"\n 成功:(\n \"以上是关于使用 Alamofire 从 Firebase 检索 JSON的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Alamofire 的 RequestAdapter 将 firebase ID 令牌设置为全局标头?
Firebase 和 Alamofire Url TableViewCell 图像加载问题 Swift 4