1

応答がJSONであるRestサービスとの統合を開発しています。

私が行う最初のリクエストは、ログインすることです。これには2つのリターンがあります。

通常、肯定的なログイン応答は次のようになります。

    {"data":{"userID":"4f561b74001ff932afd58200a752b821","sessionID":"6cc960751eef45db83dd8db7f47337a6","versionInformation":{"currentAPI":"v2.0","buildNumber":"28b12d751c5ea88d393e68285ac57ed309ae04fa","apiVersions":{"v1.0":"\/attask\/api\/v1.0\/","v2.0":"\/attask\/api\/v2.0\/"},"lastUpdated":"2013\/02\/12 17:42:57","release":"R16","version":"4.0"},"locale":"pt_BR","timeZone":"America\/Sao_Paulo","timeZoneName":"Brasilia Time","iso3Country":"BRA","iso3Language":"por","currency":{"useNegativeSign":true,"fractionDigits":2,"symbol":"R$","ID":"BRL","groupingSeparator":".","decimalSeparator":","}}}

フォーマットが変更されないことを前提として、GSONを使用してこれを逆シリアル化することに問題はありません。しかし、JSON応答が別の方法で届いた場合はどうなるでしょうか。間違ったユーザー名/パスワードでログインしようとしたように?

否定的な反応は次のようになります。

    {"error":{"class":"com.attask.biz.externallogin.ExternalLoginException","message":"The following error occurred while authenticating with an external system: Invalid password"}}

だから私の質問は、逆シリアル化するのに最も適切なオブジェクトをGSONに選択させる方法はありますか、それとも正しくなり、キャッチブロックで処理すると仮定して逆シリアル化を試みる必要がありますか?

私はそれを明確にできることを願っています、そして私は提案を楽しみにしています。

乾杯

パウロ・アルメイダ

4

2 に答える 2

1

適切な REST サービスを仮定すると、応答コードは要求が成功したかどうかを示す必要があります。そのような場合、異なる応答コードに基づいて決定を下すことができます。

不適切に実装された REST サービスの場合、応答データを JsonObject (処理されたデータの内容に応じて、必要に応じてさらに処理できます) のような「弱い」(マップ) タイプにデシリアライズすることができます。

于 2013-02-28T19:00:12.190 に答える
0

私がしているのは、オブジェクトに逆シリアル化しようとする代わりに com.google.gson.JsonParser を使用することです。そのインターフェイスを使用すると、最上位の要素を調べて (特定の属性をチェックするなど)、何をすべきかを決定できます。

于 2013-02-28T19:01:09.137 に答える