com.google.firebase.database.DatabaseException: Serialisierung von Arrays wird nicht unterstützt, bitte verwenden Sie stattdessen Listen

8

Ich versuche, ein benutzerdefiniertes Objekt mit dem folgenden Code zu erhalten:

%Vor%

Hier ist mein Objekt:

%Vor%

Und jedes Mal, wenn ich diesen Fehler bekomme - com.google.firebase.database.DatabaseException: Serializing Arrays is not supported, please use Lists instead . Meine Objekte enthalten keine Arrays, daher sieht dieser Fehler ziemlich verwirrend aus. Ich habe einen Weg gefunden, diesen Fehler zu beheben - alles funktioniert gut, wenn ich die @Exclude -Anmerkung der bodyParts -Liste von meiner Exercise -Klasse hinzufüge, aber es ist offensichtlich nicht das, was ich erreichen möchte.

Scheint, dass Firebase Objekte mit inneren Listen nicht beibehalten kann? Gibt es hier einfache Problemumgehungen oder Best Practices? Vielen Dank!

P.S. Ich verwende firebase-database:9.2.1

    
fraggjkee 30.07.2016, 11:34
quelle

6 Antworten

7

Ich habe es geschafft, den Grund für diesen Absturz zu finden. Ich habe die App auf einem anderen Gerät mit Android 5.x installiert und Firebase hat dort eine viel weniger verwirrende Ausnahme ausgelöst:

%Vor%

Es scheint, dass Firebase ( ungleich Gson ) versucht, alle möglichen Getter zu serialisieren, obwohl sie keine direkte Verbindung mit globalen Variablen (Klassenmitglieder / Felder) haben, in meinem Fall einer meiner Objekte enthielten eine Methode, die Drawable - getDrawable() zurückgab. Offensichtlich weiß Firebase nicht, wie man zeichnbares in json umwandelt.

Interessanter Moment (wahrscheinlich ein Fehler im Firebase SDK): Auf meinem älteren Gerät mit Android 4.4.1 bekomme ich immer noch meine ursprüngliche Ausnahme im selben Projekt und in derselben Konfiguration:

%Vor%     
fraggjkee 02.08.2016, 11:45
quelle
2

Falls dies anderen hilft, die den gleichen Fehler erhalten, bekam ich den gleichen Fehler und die Lösung endete für mich folgendermaßen:

Ändern:

%Vor%

An:

%Vor%

Wie @fraggjkee hervorhebt, versucht Firebase, Getter zu serialisieren, und das war das gleiche Problem hier mit Firebase, der versucht, das Ergebnis von .getText() zu serialisieren.

Hoffe das hilft anderen!

    
Rbar 05.10.2017 16:23
quelle
1

Ich hatte ein ähnliches Problem, ich habe versucht, groovy anstelle von Java zu verwenden, ich denke, dass groovy andere Methoden für mich generiert. Ich habe meine Domain-Klasse von Pogo (src / main / groovy) in Pojo (src / main / java) konvertiert und jetzt funktioniert alles gut

    
Rene Enriquez 15.09.2016 17:35
quelle
1

Fügen Sie @Exclude zu den Funktionen hinzu, die der FB zu interpretieren versucht, wie diejenigen, die Drawable zurückgeben.

%Vor%     
Drew Holtzapfel 05.07.2017 02:59
quelle
0
___ qstnhdr ___ com.google.firebase.database.DatabaseException: Serialisierung von Arrays wird nicht unterstützt, bitte verwenden Sie stattdessen Listen ___ answer39517126 ___

Ich hatte ein ähnliches Problem, ich habe versucht, groovy anstelle von Java zu verwenden, ich denke, dass groovy andere Methoden für mich generiert. Ich habe meine Domain-Klasse von Pogo (src / main / groovy) in Pojo (src / main / java) konvertiert und jetzt funktioniert alles gut

    
___ answer46590481 ___

Falls dies anderen hilft, die den gleichen Fehler erhalten, bekam ich den gleichen Fehler und die Lösung endete für mich folgendermaßen:

Ändern:

%Vor%

An:

%Vor%

Wie @fraggjkee hervorhebt, versucht Firebase, Getter zu serialisieren, und das war das gleiche Problem hier mit Firebase, der versucht, das Ergebnis von %code% zu serialisieren.

Hoffe das hilft anderen!

    
___ qstntxt ___

Ich versuche, ein benutzerdefiniertes Objekt mit dem folgenden Code zu erhalten:

%Vor%

Hier ist mein Objekt:

%Vor%

Und jedes Mal, wenn ich diesen Fehler bekomme - %code% . Meine Objekte enthalten keine Arrays, daher sieht dieser Fehler ziemlich verwirrend aus. Ich habe einen Weg gefunden, diesen Fehler zu beheben - alles funktioniert gut, wenn ich die %code% -Anmerkung der %code% -Liste von meiner %code% -Klasse hinzufüge, aber es ist offensichtlich nicht das, was ich erreichen möchte.

Scheint, dass Firebase Objekte mit inneren Listen nicht beibehalten kann? Gibt es hier einfache Problemumgehungen oder Best Practices? Vielen Dank!

P.S. Ich verwende %code%

    
___ answer44916386 ___

Fügen Sie @Exclude zu den Funktionen hinzu, die der FB zu interpretieren versucht, wie diejenigen, die Drawable zurückgeben.

%Vor%     
___ tag123java ___ Java (nicht zu verwechseln mit JavaScript oder JScript oder JS) ist eine universelle objektorientierte Programmiersprache, die für die Verwendung in Verbindung mit der Java Virtual Machine (JVM) entwickelt wurde. "Java-Plattform" ist der Name für ein Computersystem, auf dem Tools zum Entwickeln und Ausführen von Java-Programmen installiert sind. Verwenden Sie dieses Tag für Fragen, die sich auf die Java-Programmiersprache oder Java-Plattform-Tools beziehen. ___ tag123android ___ Android ist das mobile Betriebssystem von Google, das zum Programmieren oder Entwickeln von digitalen Geräten (Smartphones, Tablets, Automobile, Fernseher, Wear, Glass, IoT) verwendet wird. Verwenden Sie für Themen rund um Android Android-spezifische Tags wie android-intent, nicht intent, android-activity, nicht activity, android-adapter, nicht adapter usw. Bei anderen Fragen als der Entwicklung oder Programmierung, aber im Zusammenhang mit Android Framework, verwenden Sie Der Link: https://android.stackexchange.com. ___ answer38719548 ___

Ich habe es geschafft, den Grund für diesen Absturz zu finden. Ich habe die App auf einem anderen Gerät mit Android 5.x installiert und Firebase hat dort eine viel weniger verwirrende Ausnahme ausgelöst:

%Vor%

Es scheint, dass Firebase ( ungleich Gson ) versucht, alle möglichen Getter zu serialisieren, obwohl sie keine direkte Verbindung mit globalen Variablen (Klassenmitglieder / Felder) haben, in meinem Fall einer meiner Objekte enthielten eine Methode, die %code% - %code% zurückgab. Offensichtlich weiß Firebase nicht, wie man zeichnbares in json umwandelt.

Interessanter Moment (wahrscheinlich ein Fehler im Firebase SDK): Auf meinem älteren Gerät mit Android 4.4.1 bekomme ich immer noch meine ursprüngliche Ausnahme im selben Projekt und in derselben Konfiguration:

%Vor%     
___ tag123firebasedatabase ___ Firebase Realtime Database ist eine Cloud-gehostete NoSQL-JSON-Datenbank, die Offline-Caching und -Synchronisierung ermöglicht. Verwenden Sie dieses Tag NICHT für Fragen zu Cloud Firestore. Verwenden Sie stattdessen [tag: google-cloud-firestore]. ___ antwort43908042 ___

Fügen Sie @IgnoreExtraProperties zu Ihrer Klasse hinzu

%Vor%     
___ answer46029741 ___

Hier ist, wie das für mich gelöst wurde. Das Problem trat auf, als ich versuchte, ein int-Feld in der Datenbank zu aktualisieren. Ich habe Text aus dem Bearbeitungsfeld erhalten und vergessen, das in ein int umzuwandeln. Dies verursachte den Fehler. Versuchen Sie also, den Datentyp zu überprüfen, den Sie an die Datenbank senden, wenn dieses Problem auftritt.

    
___ tag123firebase ___ Firebase ist eine serverlose Plattform für die einheitliche Entwicklung von Anwendungen für mobile Geräte und für das Web. ___
Entreco 11.05.2017 06:29
quelle
0

Hier ist, wie das für mich gelöst wurde. Das Problem trat auf, als ich versuchte, ein int-Feld in der Datenbank zu aktualisieren. Ich habe Text aus dem Bearbeitungsfeld erhalten und vergessen, das in ein int umzuwandeln. Dies verursachte den Fehler. Versuchen Sie also, den Datentyp zu überprüfen, den Sie an die Datenbank senden, wenn dieses Problem auftritt.

    
Vijay 04.09.2017 02:59
quelle