我正在开发与Rest服务的集成,其中响应是JSON。如果在响应未达到预期时用GSON解析json?
我做的第一个请求是登录有两个可能的回报。
通常情况下,积极登录响应来自象下面这样:
{"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选择哪个是最合适的对象进行反序列化或做我必须尝试反序列化假设它是正确的,并在抓块上处理它?
我希望我能说清楚,我期待着您的建议。
干杯
圣保罗Almeida的
现在这一切都有意义......我要求两个人都使用curl,并且我可以看到响应代码已更改。看起来像那个实施了休息服务的人做他的作业=) 真正的感谢队友 – 2013-02-28 19:09:15