我正在用参数(来自模型类)与JsonObjectRequest进行post request。它看起来像
SignUpRequest registrationRequest = new SignUpRequest();
registrationRequest.setFirstName("fdffdfd");
registrationRequest.setLastName("bbbbbb");
registrationRequest.setEmail("Testing@kjkjgmail.com");
registrationRequest.setDateOfBirth("1991-5-21");
Gson gson = new Gson();
String jsonString = gson.toJson(registrationRequest);
JSONObject parameters = null;
try {
parameters = new JSONObject(jsonString);
} catch (JSONException e) {
e.printStackTrace();
}
JsonObjectRequest postRequest = new JsonObjectRequest(Request.Method.POST, uri, parameters,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.v("MainActivity", "In response :");
updateDisplayRegistration(response);
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d("MainActivity", "In failure :");
error.printStackTrace();
}
});
RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(postRequest);
SignUpRequest类有setter和getter方法。就像响应的方式一样,我也有RegistrationInfo类它有响应对象的setter和getter。
现在的问题是我如何处理响应得到它作为一个RegistrationInfo类对象。
protected void updateDisplayRegistration(JSONObject json){
RegistrationInfo regInfo = new RegistrationInfo(json.toString());
Log.v("MainActivity","registered email is ::::: ---- ::: " + regInfo.getEmail());
}
但是它返回null。即使我尝试直接对json对象,它也不返回任何值。
Like, json.getString("email");
如何处理响应?
有一个现有的库Gson(有点具体的com.google.Gson),可用于将JsonObject转换为java bean。你可以通过
RegistrationInfo regInfo = new GSON(json.toString(),RegistrationInfo.class);
Gson库使用反射方法将JSON字符串内部转换为Java bean。