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 
    // ... 
} 
+0

thanks!这是一个很好的解决方案。我结束了在json中手动检查错误。 – user123321 2013-02-27 23:30:45

+0

感谢您的评论Brian,我删除了我的帖子。 – 2013-02-28 08:32:53

+0

如果我收到MyObject数组是否正常工作?我担心静态导致所有对象具有相同的值 – 2015-07-27 08:12:07