【发布时间】:2022-11-12 15:33:54
【问题描述】:
我正在尝试从 Firebase 获取数据,并通过 SwiftyJSON 对其进行解析,但这样做时,它只会返回 null。据我所知,JSON 格式正确,并且我正在正确解析它,所以我没有完全确定这里发生了什么。任何帮助表示赞赏!
func decodeFamily(lName: String) {
//var family: Family
db.collection("families").document(lName).getDocument { documentSnapshot, error in
if documentSnapshot?.data() != nil {
do {
let data = try? JSONSerialization.data(withJSONObject:documentSnapshot?.data())
let json = try JSON(data: data!)["data"]
print(json["id"])
//family = Family(id: json["id"].rawValue, familyName: json["familyname"].rawValue, members: ...)
} catch (let error) {
print("[FetchFamily] Error: \(error)")
}
}
}
}
上面的代码只是尝试从 Firebase 获取数据,将 Firebase 返回的字符串转换为 JSON,然后尝试从 JSON 中读取“id”。单独打印 JSON 时,这很好,但是当尝试从中读取任何数据时,它会返回 null。
这是 JSON 输出:
{
"id": "---",
"familyName": "---",
"members": [
{
"id": "---",
"chores": [],
"lName": "---",
"role": "ParentGuardian",
"fName": "---"
}
]
}
我试图读取的“id”是那里的第一个 id。同样,它会自行正确输出 JSON,但是在尝试读取“id”时,它会失败。我很确定我这样做是正确的,但我很有可能不是。
【问题讨论】:
-
JSON中没有键
data,删除["data"]。请停止使用 SwiftyJSON,因为 Swift 4 支持Codable,它已经过时了。
标签: json swift firebase google-cloud-firestore swifty-json