Com Google Gson Stream Jsonreader Beginarray Jsonreader Java 338
Okay, lasst uns ehrlich sein. Wir alle haben diese Momente. Diese Momente, in denen wir uns mit Google Gson herumschlagen. Und dann noch mit diesem speziellen Biest: JsonReader. Seid ehrlich, wer von euch hat noch *nie* geflucht, als er versucht hat, ein JSON-Array zu parsen?
Ich meine, klar, JsonReader ist super, wenn man *exakt* weiß, was man tut. Aber wer tut das schon? Wir sind doch alle nur Menschen. Wir machen Fehler. Und JsonReader bestraft uns dafür.
BeginArray: Der Anfang vom Ende?
Und dann kommt beginArray(). Das klingt doch erstmal nett, oder? "Oh, ich fange ein Array an!" Klingt nach Spaß. Klingt nach Kuchen. Falsch! Es ist eher der Anfang eines verwirrenden Labyrinths. Ein Labyrinth aus Schleifen, Bedingungen und der ständigen Angst, dass man etwas vergisst und eine IllegalStateException wirft.
Versteht mich nicht falsch. Ich schätze die Arbeit der Leute von Google. Wirklich. Aber manchmal frage ich mich, ob sie jemals selbst mit ihren eigenen Kreationen gearbeitet haben. Haben sie jemals um 3 Uhr morgens versucht, ein verschachteltes JSON-Objekt zu parsen, während sie gleichzeitig einen Espresso runterwürgen und versuchen, die Deadline einzuhalten?
Der Fluch der Iteration
Und dann diese verdammten Schleifen! "Solange hasNext() wahr ist..." Ja, ja, wir wissen es. Aber was, wenn hasNext() *nicht* wahr ist? Was, wenn plötzlich Aliens landen und hasNext() aus irgendeinem Grund fehlschlägt? Okay, vielleicht ein extremes Beispiel. Aber ihr versteht, was ich meine.
Ich behaupte ja nur: Es gibt einfachere Wege, ein JSON zu parsen. Wege, die nicht so viel Kopfzerbrechen bereiten. Wege, die nicht dazu führen, dass man seine Tastatur aus dem Fenster werfen möchte.
Und wisst ihr was? Ich glaube, viele von euch denken das auch. Ihr traut euch nur nicht, es laut zu sagen. Weil Google Gson so etabliert ist. Weil es überall verwendet wird. Aber ich sage: Es ist okay, zuzugeben, dass es manchmal einfach... ätzend ist.
Java 338: Eine magische Zahl?
Warum ich Java 338 erwähne? Weil es wie eine zufällige Zahl klingt, die man in einem Stack Overflow-Beitrag findet. Und ehrlich gesagt, fühlt sich die Suche nach einer Lösung für ein Gson/JsonReader-Problem oft so an: Man stolpert von einem obskuren Forum zum nächsten, klammert sich an jeden Code-Schnipsel, der auch nur entfernt vielversprechend aussieht.
Und dann, nach Stunden des Debuggings, stellt man fest, dass man einfach nur ein Semikolon vergessen hat. Oder dass man die Reihenfolge der nextString()-Aufrufe falsch hatte. Argh!
Ich sage nicht, dass Google Gson schlecht ist. Es ist leistungsstark, flexibel und... nun ja, weit verbreitet. Aber es ist auch... kompliziert. Manchmal unnötig kompliziert.
Es gibt Momente, in denen ich mir wünschte, ich könnte einfach sagen: "Lieber Computer, nimm dieses JSON, mach daraus ein Objekt und lass mich in Ruhe." Aber nein. Stattdessen müssen wir uns mit beginArray(), hasNext() und der ewigen Angst vor IllegalStateException herumschlagen.
Unpopuläre Meinung: Es gibt bessere Alternativen!
Und hier kommt meine unpopuläre Meinung: Es gibt Alternativen! Es gibt Libraries, die einfacher zu bedienen sind, die weniger Boilerplate-Code erfordern und die nicht dazu führen, dass man nachts schweißgebadet aufwacht und von verschachtelten JSON-Objekten träumt.
Ich nenne jetzt keine Namen. Aber sie sind da draußen. Sie warten darauf, entdeckt zu werden. Sie warten darauf, euer Leben ein bisschen einfacher zu machen.
Also, das nächste Mal, wenn ihr euch mit Gson und JsonReader herumschlagt, denkt an mich. Denkt daran, dass ihr nicht allein seid. Und denkt daran, dass es vielleicht, nur vielleicht, eine bessere Lösung gibt. Eine Lösung, die euch erlaubt, wieder Spaß am Programmieren zu haben. Eine Lösung, die euch erlaubt, eure Tastatur nicht aus dem Fenster zu werfen.
Und wenn ihr dann immer noch Gson verwendet... nun ja, dann bin ich beeindruckt. Und ein bisschen leid tut ihr mir auch. Aber hey, jeder wie er mag.
"Ich hasse es nicht. Ich hasse nur alles daran." - paraphrasiert von einem genervten Entwickler, irgendwo auf der Welt, jetzt gerade.
Denkt daran: Code sollte Spaß machen. Wenn er das nicht tut, dann macht ihr vielleicht etwas falsch. Oder ihr verwendet Google Gson mit JsonReader. In diesem Fall ist es wahrscheinlich nicht eure Schuld.
