Я пытаюсь использовать JSONDecoder с FirebaseDatabase. В Интернете есть несколько примеров, но я не смог найти ни одного с динамическими объектными ключами, подобными тем, которые возвращаются в ответе, который я получаю. Есть ли лучший способ сделать это?
JSON Пример:
{
"-LUOhAM5W42t9YxqFkUQ" = {
author = {
name = testName;
};
commentCount = 0;
detail = "";
id = "-LUOhAM5W42t9YxqFkUQ";
likeCount = 0;
};
"-LUOhNU4wfwTlZQkrGFu" = {
author = {
name = otherName;
};
commentCount = 0;
detail = "";
id = "-LUOhNU4wfwTlZQkrGFu";
likeCount = 0;
};
Моя структура выглядит следующим образом (сначала я просто пытаюсь успешно декодировать):
struct Post: Decodable {
var id: String?
var title: String?
}
И мой код в моем контроллере выглядит следующим образом:
func getPosts() {
Database.database().reference().child("posts").observeSingleEvent(of: .value, with: { (snapshot) in
guard let value = snapshot.value else { return }
print("VALUE: \(value)")
do {
let person = try FirebaseDecoder().decode(Post.self, from: value)
print(person)
} catch let error {
print(error)
}
})
}
Я знаю, что мог бы пройтись по каждому объекту, декодировать и затем добавить их в массив, но я ищу наиболее эффективный подходи мне очень нравится JSONDecoder. Опять же, загвоздка в том, что Firebase помещает ключ объекта в начале каждого объекта, что кажется странным. Любая помощь будет принята с благодарностью!