2012-04-14 9 views
0

gsonの逆シリアル化に問題があります。 着信jsonは{"roles":{"name":"bla" "perm" : "bla"}}のように表示されます。利用可能なロールが他にある場合は {"roles":[{"name":"bla" "perm" : "bla"}{"name":"hihi" "perm" : "hihi"}]}のようになります。ですから、最初のパラメータロールはオブジェクトであり、2回目はオブジェクトの配列です。GSON:予想されるBEGIN_ARRAYでしたが、BEGIN_OBJECTでした

私のJavaクラスにフィールドRole [] rolesがあるときに問題が発生します。 jsonのparametrのロールは "Expected BEGIN_ARRAY but BEGIN_OBJECT"という1つのオブジェクト例外です。

がよろしく

答えて

1

でいただきありがとうございますこれは少しbogous状況です - あなたはライブラリが同じ時間にJSONのための適切二つの異なるスキーマを処理することを期待することはできません。しかし、私のクライアントがGSONを使ってサービスを利用していたときにも同様の問題がありましたが、Jerseyを使用して設定されていました。

適切な設定でJacksonを追加すると、私のサービスは常に問題の実際の修正である配列になります。サービスを修正する方法については、this threadを参照してください。

+0

あなたの投稿をありがとうございます。問題は、私はこのアプリケーションのサーバー側へのアクセスを持っていないということです:(。 – malinjir

+1

おそらく、GSONの代わりにJacksoonを使用することに変わりますか?これらのライブラリはすべて、このような一貫性のない配列の処理を宣言した後、彼ら自身の出力。 –

1

独自のTypeAdapterを使用して、単一インスタンスの大文字小文字を処理し、逆シリアル化して配列に変換し、フィールドに設定して一様にすることができます。

関連する問題