如何将POJO转换为JSONObject?

时间:2019-05-26 11:51:26

标签: java android gson android-volley

我正在尝试使用排球库通过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的其他简单方法?

1 个答案:

答案 0 :(得分:0)

您需要在类上使用JSON批注。查看jsonscheme2pojo.org。一旦有了,就可以使用ObjectMapper()将值作为字符串写出。从那里,使用JSONObject()并传入您的字符串。