Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在android中以post的形式发送嵌套json_Java_Android_Json_Api_Android Volley - Fatal编程技术网

Java 如何在android中以post的形式发送嵌套json

Java 如何在android中以post的形式发送嵌套json,java,android,json,api,android-volley,Java,Android,Json,Api,Android Volley,我使用android valley库,目前我只能发布简单的json,我很难发布嵌套的json格式,如下所示: { "user": { "email": "digest@example.com", "password": "thedigest123" 看起来我不知道如何格式化这个案例中的嵌套json,你能帮我吗 这是我用来连接web api的java类 public void l

我使用android valley库,目前我只能发布简单的json,我很难发布嵌套的json格式,如下所示:

{
"user": {
    "email": "digest@example.com",
    "password": "thedigest123" 
看起来我不知道如何格式化这个案例中的嵌套json,你能帮我吗

这是我用来连接web api的java类

public void login(String email, String password) {
    String url = BASE_URL + "api/session";
    JSONObject jsonObject = new JSONObject();

    try {
        jsonObject.put("email", email);
        jsonObject.put("password", password);

        Response.Listener<JSONObject> successListener = new Response.Listener<JSONObject>() {
            @Override
            public void onResponse(JSONObject response) {
                Toast.makeText(mApplication, "Success", Toast.LENGTH_SHORT).show();
            }
        };

        Response.ErrorListener errorListener = new Response.ErrorListener() {

            @Override
            public void onErrorResponse(VolleyError error) {
                Toast.makeText(mApplication, "Error", Toast.LENGTH_SHORT).show();
            }
        };

        JsonObjectRequest request = new JsonObjectRequest(Request.Method.POST, url, jsonObject, successListener, errorListener);
        mRequestQueue.add(request);
    }

    catch (JSONException e) {
        Toast.makeText(mApplication, "JSON exception", Toast.LENGTH_SHORT).show();
    }

}
public void登录(字符串电子邮件、字符串密码){
字符串url=BASE_url+“api/会话”;
JSONObject JSONObject=新的JSONObject();
试一试{
jsonObject.put(“电子邮件”,email);
jsonObject.put(“密码”,password);
Response.Listener successListener=新建Response.Listener(){
@凌驾
公共void onResponse(JSONObject响应){
Toast.makeText(mApplication,“Success”,Toast.LENGTH_SHORT).show();
}
};
Response.ErrorListener ErrorListener=新的Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
Toast.makeText(mApplication,“Error”,Toast.LENGTH_SHORT).show();
}
};
JsonObjectRequest=新的JsonObjectRequest(request.Method.POST、url、jsonObject、successListener、errorListener);
mRequestQueue.add(请求);
}
捕获(JSONException e){
Toast.makeText(mApplication,“JSON异常”,Toast.LENGTH_SHORT.show();
}
}
  • 为请求正文创建dto类:

    public class UserRequestDTO{
        private UserDto user;
        //getters, setters
    }
    public class UserDto{
        private String email;
        private String password;
    }
    
  • 使用Gson lib将其转换为json字符串:

    public static String stringify(Object obj) {
         Gson gson = new Gson();
         String jsonString = gson.toJson(obj);
         return jsonString;
    }
    
  • 然后使用新的StringEntity将其转换为StringEntity(stringify(新的UserRequestDto(/*params*/),“UTF-8”);
    或者使用
    新建JSONObject(stringify(new UserRequestDto(/*params*/);
    )创建JSONObject,并在您的请求中使用它。

    如果您不想增加Gson的开销或创建类(除非您打算拥有更复杂的对象),您可以简单地执行以下操作:

    JSONObject userJsonObject = new JSONObject("{ \"user\": {\"email\": \"" + email + "\", \"password\": \"" + password + "\" } }");
    

    这将是明智的选择,尤其是当存在更复杂的
    JSONObjects
    +1时