Android Gson自定义错误处理
我试图使用这个库来解析一些json数据。来自服务器的响应可以是以下任一项: 成功结果:Android Gson自定义错误处理,android,gson,Android,Gson,我试图使用这个库来解析一些json数据。来自服务器的响应可以是以下任一项: 成功结果: {myObject: {foo:"1", bar:"bleh"}} 故障结果: {error: {message:"invalid token", code:320} } Gson似乎只能处理一种返回类型,例如: Gson gson = new Gson(); MyObject object = gson.fromJson(value, MyObject.class); 如何使用Gson正确解析feed
{myObject: {foo:"1", bar:"bleh"}}
故障结果:
{error: {message:"invalid token", code:320} }
Gson似乎只能处理一种返回类型,例如:
Gson gson = new Gson();
MyObject object = gson.fromJson(value, MyObject.class);
如何使用Gson正确解析feed中的数据/(错误),而不仅仅是直接解析JSON 因为你不知道你将得到什么,所以很难使用像Gson这样的东西并反序列化到POJO。实际上,您将获得一个包含“myObject”或“error”字段的对象。一种方法是简单地创建一个综合对象。Gson在解析JSON时将任何不存在的字段设置为
null
,这样就可以了:
class JSONResponse {
private MyObject myObject;
private Error error;
static class MyObject {
String foo;
String bar;
}
static class Error {
String message;
int code;
}
public boolean isError() {
return error != null;
}
// Getters that access the fields of the objects
// ...
}
谢谢@Brian。我就这样结束了
JsonParser parser = new JsonParser();
parser.parse(value).getAsJsonObject();
然后检查错误节点是否存在,以便抛出服务器异常。如果节点不存在,那么我从那里使用Gson
Gson gson = new GsonBuilder().create();
ArrayList<GridItemVo> list = gson.fromJson(value, new TypeToken<ArrayList<GridItemVo>>(){}.getType());
Gson Gson=new GsonBuilder().create();
ArrayList=gson.fromJson(值,newTypeToken(){}.getType());
谢谢!这是一个很好的解决方案。我最后手动检查了json中的错误。谢谢你的评论,Brian,我删除了我的帖子。如果我收到MyObject数组,它能工作吗?我担心静态,因为所有对象都有相同的值