У меня есть карта (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")
), я все равно получаю ту же ошибку.Пожалуйста, помогите.