如何在gson解析android时检查密钥是否存在

时间:2015-03-25 11:39:26

标签: android json gson android-volley

我正在使用gson解析json响应。但是在我的情况下,我对成功和失败的反应不同。     所以我无法解析数据,因为在我的实用程序类中,我已经创建了一些不存在的场景。     例如注册成功时,我使用user密钥来获取用户详细信息,而注册失败时我使用error字段来获取错误消息。

我对json解析有所了解,并且我们逐步解析,如果成功为真则解析用户详细信息,否则解析错误。再次在json解析中,我们有方法has,它检查密钥是否存在。我也在寻找类似gson的东西。

以下是我的代码段,请检查

从服务器获取注册数据

 private void getRegisterData(String email, String password, String full_name,String phone) {
    WdApplication= (WAdvantageApplication) this.getApplication();
    RequestQueue queue = application.getRequestQueue();
    HashMap<String, String> headerMap = new HashMap<String, String>();
    headerMap.put(RequestHeaders.CONTENT_TYPE, RequestHeaders.CONTENT_TYPE_JSON);

    HashMap<String, String> dataMap = new HashMap<String, String>();
    dataMap.put("email", email);
    dataMap.put("password", password);
    dataMap.put("phone", phone);
    dataMap.put("fullname", full_name);

    GsonRequest<RegisterDetails> request = new GsonRequest<RegisterDetails>(GsonRequest.Method.POST, URLConstant.REGISTER_URL, RegisterDetails.class, headerMap, dataMap, successListener, failureListener);
    queue.add(request);


}

    private Response.Listener successListener = new Response.Listener<RegisterDetails>() {
    @Override
    public void onResponse(RegisterDetails registerDetails) {

       Log.e("success", "Success");

        finish();
    }
};

private Response.ErrorListener failureListener = new Response.ErrorListener() {

    @Override
    public void onErrorResponse(VolleyError volleyError) {
        Log.e("fail", "Registration failed");



    }
};

我的RegisterDetails

    @SerializedName("user")
    private UserDetails userDetails;

   @SerializedName("success")
   private String success;


   @SerializedName("error")
   Information info;

因此,为了成功,我只想要user部分而成功是假的,我希望error部分。

如果我做错了什么,请纠正我,谢谢

2 个答案:

答案 0 :(得分:0)

我不确定你在问什么,但是如果你在单个响应中获得成功密钥和用户密钥(如果成功)和错误(如果出错),你可以编写类似这样的代码。 / p>

if(registerDetails.getSuccess().equalsIgnoreCase("true"))
{
   // use registerDetails.getUserDetails();
}
else
{
   // use registerDetails.getInfo();
}

答案 1 :(得分:0)

不确定GSON但​​是如果您使用Jackson,则可以提供这样的注释

@JsonIgnoreProperties(ignoreUnknown = true)

然后您可以使用相同的模型类进行成功或失败,如果成功,将设置userDetails,如果失败,则将设置错误部分。