【问题标题】:Retrieve JSON from Firebase with Alamofire使用 Alamofire 从 Firebase 检索 JSON
【发布时间】: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有问题,请添加您的数据库截图

标签: ios json swift firebase alamofire


【解决方案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 \"\",\n {\n aaa = 111;\n bbb = \"bbb\";\n ccc = 111;\ n ddd = \"ddd\";\n eee = (\n a,\n b,\n c\n );\n }\n)"
猜你喜欢
  • 2015-10-14
  • 1970-01-01
  • 2020-12-02
  • 1970-01-01
  • 2016-09-01
  • 2021-05-07
  • 2018-12-08
  • 2020-07-10
  • 1970-01-01
相关资源
最近更新 更多