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

  • Aplicación abierta en la notificación de firebase recibida (FCM)
  • Firebase Cloud Messaging - Manejo de cierre de sesión
  • ¿Cómo comprobar si un niño existe en firebase?
  • Firebase permisos adicionales. Se solicita aceptación al usuario
  • Algunos dispositivos no reciben notificaciones de FCM
  • ¿Puede la notificación FCM sobre Android sobreescribir anterior?
  • Uid de firewall y firebase uid no coinciden después de actualizar firebase a 9.2.0
  • Firebase - Forzando nombres de usuario únicos
  • Cómo desactivar los informes de bloqueo de Firebase cuando la aplicación se ejecuta en depuración?
  • Integración Algolia Firebase y Android
  • Android Firebase Cloud Messaging (FCM): ¿SuscribeToTopic hará intentos automáticos?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.