2016-12-10 12 views
1

javax.json.JsonObjectを返す残りのエンドポイントからフェッチされたjavax.json.JsonObjectを逆シリアル化する際に問題があります。
私はTomEE 7.0.2 Webプロファイルを使用しています。RESTクライアントでJsonObjectを逆シリアル化する

少しデバッグした後、からの例外が見つかりました。JsonObject.getJsonObject(name)の場合、NullPointerExceptionです。
のjavadocから、nameのマッピングが見つからない場合、メソッドは例外をスローしません。 Instedそれはnullを返す必要があります。

Jsonの逆シリアル化はあまり一般的ではないため、すべてのマッピングが存在しないことがあります。これは第三者のライブラリでJsonObject.getJsonObject(name)が呼び出されているため、私にとっては問題です。

このNullPointerExceptionがスローされた理由を誤解しましたか?アプリケーション戦争がTomEEサーバーで実行されるとき、別のjavax.json.JsonObject実装を使用するための回避策はありますか?

答えて

0

実際の値を読み取る前にcontainsKeyを使って存在をテストできます。

+0

問題は、getJsonObjectの呼び出しがサードパーティのライブラリにネストされているため、NullPointerExceptionを回避するためにgetJsonObjectの前にcontainsKeyを呼び出すことができないためです。おそらく、あなたは実際に最初の投稿から質問に答えることができる人です。また、tomeeサーバーとjsonb仕様での作業についておめでとうございます。 –

+0

JsonStructure(getJsonObject()メソッドを呼び出すときには、getString()などの直接値を取得したときにspec(jsonp)がこのNPEを必要とするため、johnzonのバグでした(今後の修正で再リリースされます) )またはgetJsonString()など)。ジョンゾーンでは常にNPEを投げていました。このコードを変更できない場合、回避策は、データが第三者に渡される前にデータが見つからなかった場合、jsonオブジェクトを再作成することです。エレガントではないが、あなたをブロックする。 –

+0

私はJohnzonのソースコードを見て、その例外がどこから来たのかを見ました。問題は、私たちが持っているのは、ライブラリの中には、残酷なリンク、メソッド呼び出し、シリアライゼーション、およびデシリアライゼーションの後に、残りのエンドポイントに接続する定型コードがたくさんあることです。私たちがtomeeに置くまで、それは働いていました。ちょうどもう1つの質問は、ジョンジョンが次のリリースでリリースされる予定ですか? –

0

変数を間違った型でキャッチしているからです。代わりにvarを試してください。

+0

答えにさらに情報を追加できますか?タイプが間違っているとはどういう意味ですか? –

関連する問題