Android firebase 9.0.0 setValue para serializar enums

Tengo esta clase haciendo uso de enums. Parsing to Firebase json solía trabajar muy bien – usando Jackson. Durante la migración a firebase-database: 9.0.0 obtengo lo siguiente:

Com.google.firebase.database.DatabaseException: No hay propiedades que se serialicen en la clase … MyClass $ Kind

Donde Kind es el tipo declarado enum. La clase:

public class MyClass { public enum Kind {W,V,U}; private Double value; private Kind kind; /* Dummy Constructor */ public MyClass() {} public Double getValue() { return value; } public void setValue(Double value) { this.value = value; } public Kind getKind() { return kind; } public void setKind(Kind kind) { this.kind = kind; } } 

Sospecho que Firebase ya no utiliza Jackson cuando serializa setValue (new MyClass ()).

¿Hay una manera de obtener tipos de enum serializado? ¿O algún medio para ser explícito con respecto al método serializador?

Usted tiene razón, base de datos Firebase ya no utiliza Jackson para serialización o deserialización.

Puede representar su enum como una cadena al hablar con Firebase haciendo esto:

 public class MyClass { public enum Kind {W,V,U}; private Double value; private Kind kind; /* Dummy Constructor */ public MyClass() {} public Double getValue() { return value; } public void setValue(Double value) { this.value = value; } // The Firebase data mapper will ignore this @Exclude public Kind getKindVal() { return kind; } public String getKind() { // Convert enum to string if (kind == null) { return null; } else { return kind.name(); } } public void setKind(String kindString) { // Get enum from string if (kindString == null) { this.kind = null; } else { this.kind = Kind.valueOf(kindString); } } } 

Al igual que un lado de optimización de la respuesta En Android, se recomienda no utilizar Enums. Utilice @StringDef o @IntDef, que podría estar funcionando sin soluciones y optimizado su aplicación para la memoria.

Razonamiento de vídeo muy bonito por qué: https://www.youtube.com/watch?v=Hzs6OBcvNQE

  • Firebase onMessageReceived no llamado cuando la aplicación está inactiva
  • Cómo reordenar los datos de la base de datos en tiempo real firebase
  • Datos demográficos de Firebase Analytics
  • Android - Firebase - TaskSnapshot - Método sólo debe ser accedido dentro de ámbito privado?
  • Firebase Analytics Debug View no muestra nada
  • Eliminar los análisis de firebase de la aplicación android por completo
  • Autenticación de Firebase en el sitio web de wordpress
  • Firebase: ¿Cómo mantener un usuario de Android conectado?
  • Firebase en Android: ¿Cómo comprobar el ancho de banda del cliente utilizado?
  • Notificación de Firebase sobre niño agregado / modificado
  • Prueba de unidad con Firebase
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.