我正在使用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
部分。
如果我做错了什么,请纠正我,谢谢
答案 0 :(得分:0)
我不确定你在问什么,但是如果你在单个响应中获得成功密钥和用户密钥(如果成功)和错误(如果出错),你可以编写类似这样的代码。 / p>
if(registerDetails.getSuccess().equalsIgnoreCase("true"))
{
// use registerDetails.getUserDetails();
}
else
{
// use registerDetails.getInfo();
}
答案 1 :(得分:0)
不确定GSON但是如果您使用Jackson,则可以提供这样的注释
@JsonIgnoreProperties(ignoreUnknown = true)
然后您可以使用相同的模型类进行成功或失败,如果成功,将设置userDetails,如果失败,则将设置错误部分。