Ошибка Firebase при нажатии на новый узел: не удалось проанализировать узел с классом класса (Kotlin) - PullRequest
0 голосов
/ 01 июля 2019

У меня есть карта (Map<String, Any>), которая является результатом сериализации объекта Gson.

Это результат отображения карты при печати на консоль.

{canAccessAdminList=false, canChangeAdminList=true, canChangeVotesData=true, canSendEmailReport=true, email=admin@example.com, getMonthlyReport=true, isActive=true, password=test, username=admin}

Исходный класс выглядит следующим образом:

class AdminModel {

    var id: Int? = null
    var username: String = ""
    var password: String = ""
    var email: String = ""
    var lastLogin: Date? = null

    var canAccessAdminList: Boolean = false
    var canChangeAdminList: Boolean = false
    var canSendEmailReport: Boolean = false
    var canChangeVotesData: Boolean = false
    var isActive: Boolean = true
    var getMonthlyReport: Boolean = true

}

Примечание: Gsonне сериализует id и lastLogin, потому что в этом случае они равны нулю.

Когда я пытаюсь написать это в Firebase следующим образом:

ref.push().setValue(map) { error, ref -> }

я получаюошибка:

com.google.firebase.database.DatabaseException: Failed to parse node with class class com.example.activities.NewUserActivity$setListener$2$1
        at com.google.firebase.database.snapshot.NodeUtilities.NodeFromJSON(com.google.firebase:firebase-database@@17.0.0:103)
        at com.google.firebase.database.snapshot.NodeUtilities.NodeFromJSON(com.google.firebase:firebase-database@@17.0.0:28)
        at com.google.firebase.database.snapshot.PriorityUtilities.parsePriority(com.google.firebase:firebase-database@@17.0.0:39)
        at com.google.firebase.database.DatabaseReference.setValue(com.google.firebase:firebase-database@@17.0.0:207)
        ....

Почему это происходит?Я прочитал из другого ответа , что это происходит только с использованием updateChildren, а не setValue.Или также потому, что где-то в пути есть некоторые значения, которые непосредственно не отображаются в значение JSON.Но я использую только строковые, int и логические значения.Есть ли какие-либо из них не могут быть напрямую сопоставлены с JSON?Даже когда я напрямую предоставляю карту в setValue (например: mapOf("username" to "hello", "password" to "world")), я все равно получаю ту же ошибку.Пожалуйста, помогите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...