我正在尝试使用排球库通过android应用向本地服务器发出POST请求。
我的POJO课是:
public class UserSignup implements Serializable{
private String fullName;
private String email;
private String confirmPassword;
private String password;
//getter setter
}
然后我尝试通过以下方式将pojo转换为org.json.JSONObject:
private void userSignup(final UserSignup userSignup) {
String url = BASE_URL+"user/register";
//conversion here
Gson gson = new GsonBuilder().create();
String signupData = gson.toJson(userSignup);
Log.i("data: ", signupData);
JSONObject json = null;
try {
json = new JSONObject(signupData);
} catch (JSONException e) {
e.printStackTrace();
}
//POST request
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST, url, json, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.i("onResponse", response.toString());
Toast.makeText(Signup.this, "SignUp Successful!!", Toast.LENGTH_SHORT).show();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.i("onErrorResponse", error.toString());
Toast.makeText(Signup.this, "SignUp Failed!!", Toast.LENGTH_SHORT).show();
}
}) {
@Override
public String getBodyContentType() {
return "application/json";
}
};
RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(jsonObjectRequest);
}
但是我得到这样的错误:
I/onErrorResponse: com.android.volley.ParseError: org.json.JSONException: Value User of type java.lang.String cannot be converted to JSONObject
但是,数据已插入数据库中,但是由于引用了“ SignUp Failed !!”,我得到了errorResponse。
是否存在将这些pojo转换为JSONObject的其他简单方法?
答案 0 :(得分:0)
您需要在类上使用JSON批注。查看jsonscheme2pojo.org。一旦有了,就可以使用ObjectMapper()将值作为字符串写出。从那里,使用JSONObject()并传入您的字符串。