Gson自定义错误处理
问题描述:
我试图使用Gson库来解析一些json数据。从服务器的响应可能是以下任一:Gson自定义错误处理
成功结果:
{myObject: {foo:"1", bar:"bleh"}}
故障结果:
{error: {message:"invalid token", code:320} }
好像GSON只能处理一个单一的返回类型,如东西像这样:
Gson gson = new Gson();
MyObject object = gson.fromJson(value, MyObject.class);
如何正确解析数据/(错误)从饲料使用t他Gson,而不仅仅是JSON解析自己?
答
谢谢@布赖恩:GSON解析当JSON所以像这样的做工精细设置不存在于任何null
领域。我结束了这样解析
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这样的东西并反序列化到POJO。你实际上得到一个带有“myObject”或“error”字段的对象。一种方法是简单地创建一个综合对象。
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
// ...
}
thanks!这是一个很好的解决方案。我结束了在json中手动检查错误。 – user123321 2013-02-27 23:30:45
感谢您的评论Brian,我删除了我的帖子。 – 2013-02-28 08:32:53
如果我收到MyObject数组是否正常工作?我担心静态导致所有对象具有相同的值 – 2015-07-27 08:12:07