¿Cuál es la forma recomendada de deserializar un documento de Firestre que contiene una matriz?

Estoy intentando search un documento Firestre que contenga una matriz, sin embargo, no puedo hacer que el método DocumentSnapshot.toObject funcione correctamente tan pronto como agregue una matriz. No quiero usar una colección ya que la matriz probablemente solo contenga 1-2 elementos como máximo.

 java.lang.RuntimeException: Could not deserialize object. Failed to convert value of type com.google.android.gms.internal.zzegf to DocumentReference (found in field 'references.[0]') 

A continuación está mi class de model

 data class SomeModel( var references : ArrayList<DocumentReference> = ArrayList(0), var title : String? = null, var acronym : String? = null, var number : Long? = null ){ } 

Mi documento Firestre contiene una matriz llamada references con una DocumentReference . Si elimino el campo de reference de la class de model, el object se deserializa muy bien.

si quiero recuperar la list de elementos dentro de un solo documento, podría hacer:

la class de datos que contiene la list de cadenas, la list podría ser de cualquier tipo

nota: – proporciono valores por defecto para todos los parameters, para deserializar es necesario que la class tenga un contratista vacío.

  data class SomeModel(val references : List<String> = emptyList() , val title : String = "" , val acronym : String = "" , val number : Long = 0L) 

entonces puedo señalar este único documento y deserializarlo, incluida la list de temas en el documento de esta manera:

 val db = FirebaseFirestre.getInstance() val someModelRef = db.collection("someCollection").document("SomeModel") someModelRef.get().addOnSuccessListener { val someModel : SomeModel = it.toObject(SomeModel::class.java) someModel.references.forEach { Log.i("MainActivity","items $it") } } 

los datos en la database de Firerestre:

enter image description here

la salida en mi logcat cuando ejecuto el código anterior

enter image description here

La actualización de mi input de file gradle de Firebase-Firerestre de 11.4.2 a 11.6.0 solucionó el problema de deserialization.

  • ¿Cómo puedo hacer un salto de línea (continuación de línea) en Kotlin?
  • Múltiples requestes de modificación2 usando Flowable en Kotlin
  • ¿Por qué tengo que devolver Unit.INSTANCE al implementar en Java una function Kotlin que devuelve una Unidad?
  • ¿Cómo puedo cuadrar cada elemento de una matriz de integers en Kotlin?
  • ¿Cómo anular las properties de las classs de Java en Kotlin?
  • cómo implementar una llamada limitada con retrofit que bloquea el cliente y corutinas
  • Fallo de verificación de contrato en corda Hello World pt 2
  • ¿Cuál es la diferencia entre plus y plusAssign en la sobrecarga del operador de kotlin?
  • kotlin cómo referir el scope externo esto en funciones de aplicación multicapa
  • Polimorfismo en las funciones de extensión en Kotlin
  • ¿Es posible usar Allatori en el código fuente de Kotlin?