Ich habe ein Problem beim Deserialisieren von javax.json.JsonObject
, das vom Rest-Endpunkt abgerufen wird, der javax.json.JsonObject
zurückgibt.
Ich verwende TomEE 7.0.2 Webprofil.Deserialisieren von JsonObject in REST-Client
Nach wenig Debugging, fand ich diese Ausnahme von Johnzone JsonObject implementation, und es ist NullPointerException
bei der Verwendung der Methode JsonObject.getJsonObject(name)
.
Von javadoc für JsonObject sagt es, dass Methode keine Ausnahme auslösen sollte, wenn keine Zuordnung für name
gefunden wird. Es sollte null
zurückgegeben werden.
Diese JS-Deserialisierung soll wenig generisch sein, und manchmal sind nicht alle Abbildungen vorhanden. Und das ist ein Problem für mich, weil JsonObject.getJsonObject(name)
in Third-Party-Bibliothek aufgerufen wird.
Habe ich etwas falsch verstanden, warum dieses NullPointerException
geworfen wird? Ist es möglich, eine andere javax.json.JsonObject
Implementierung zu verwenden, wenn Application War im TomEE Server ausgeführt wird?
Problem ist, dass der Aufruf von getJsonObject in Third-Party-Bibliothek verschachtelt ist, daher kann ich vor getJsonObject nicht den containsKey aufrufen, um die NullPointerException zu vermeiden. Wahrscheinlich bist du eine Person, die Fragen vom ersten Post an beantworten kann. Herzlichen Glückwunsch zu Ihrer Arbeit bei tomee server und jsonb specification. –
Dies war ein Bug in JohnZon (wird in den nächsten Tagen mit der Korrektur wieder veröffentlicht werden) Ursache spec (JSONP) erfordert diese NPE, wenn Sie den direkten Wert (getString() für Beispiel) erhalten, aber nicht, wenn Sie eine JsonStructure bekommen (getJsonObject () oder getJsonString() zum Beispiel). In Johnzon haben wir immer eine NPE geworfen. Wenn Sie diesen Code nicht ändern können, besteht die Problemumgehung wahrscheinlich darin, das Json-Objekt neu zu erstellen, wenn es die Daten verpasste, bevor es an den Drittanbieter weitergegeben wurde. Nicht elegant, aber entsperren Sie. –
Ich habe im Quellcode in Johnzon gesucht und gesehen, woher diese Ausnahme kommt. Das Problem, das wir haben, besteht darin, dass in dieser Bibliothek eine Menge Code zum Kennenlernen vorhanden ist, der sich mit Rest-Endpunkten verbindet, nach dem Aufruf von Hassoas-Links, Aufruf der Methode, Serialisierung und Deserialisierung. Und es funktionierte, bis wir es auf den Tomee setzten. Nur noch eine Frage, ist Fix für Johnzon wird bei nächsten tomee Release veröffentlicht werden? –