Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.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
Android json:无法解析此类型的json响应_Android_Json - Fatal编程技术网

Android json:无法解析此类型的json响应

Android json:无法解析此类型的json响应,android,json,Android,Json,我知道对象像一些:{和数组像一些:[ 但当我使用post请求api响应时 {"code": 401, "message":"some message text"} 这是什么类型的json,我曾多次尝试在文本视图中显示消息,但都没有成功,同时我能够显示对象响应或数组…我正在使用Volley,顺便说一下,我也尝试过检查 If(response.has("message"){ }else{ } 对“code”进行相同的检查,将其切换为字符串资源中的消息 提前谢谢 以下是完整的请求:

我知道对象像一些:
{
和数组像一些:
[
但当我使用post请求api响应时

 {"code": 401, "message":"some message     text"}
这是什么类型的json,我曾多次尝试在文本视图中显示消息,但都没有成功,同时我能够显示对象响应或数组…我正在使用
Volley
,顺便说一下,我也尝试过检查

If(response.has("message"){
}else{
}
对“code”进行相同的检查,将其切换为字符串资源中的消息 提前谢谢

以下是完整的请求:

    private void checkLogin(final String email, final String password) {
    // Tag used to cancel the request
    String tag_string_req = "req_login";

    pDialog.setMessage("Logging in ...");
    showDialog();

    StringRequest strReq = new StringRequest(Method.POST,
            AppConfig.URL_LOGIN, new Response.Listener<String>() {

        @Override
        public void onResponse(String response) {
            Log.d(TAG, "Login Response: " + response.toString());
            hideDialog();

            try {
                JSONObject jObj = new JSONObject(response);
                if (jObj.has("user")) {
                // user successfully logged in
                    // Create login session
                    session.setLogin(true);

                    JSONObject user = jObj.getJSONObject("user");
                    String uid = user.getString("id_user");
                    String uname = user.getString("name");
                    String uemail = user.getString("email");
                    String utoken = user.getString("user_token");
                    // Inserting row in users table
                    db.addUser(uname, uemail, uid, utoken);
                    // Launch main activity
                    Intent intent = new Intent(LoginActivity.this,
                            Activity1.class);
                    startActivity(intent);
                    finish();
                }else {
                    JSONObject jOsbj = new JSONObject(response);
                    TextView scss = (TextView) findViewById(R.id.loginerror);
                    scss.setText(jOsbj.getInt("code"));
                    String errorMsg = scss.getText().toString();
                    Toast.makeText(getApplicationContext(),
                            errorMsg, Toast.LENGTH_LONG).show();
                }


            } catch (JSONException e) {
                // JSON error
                e.printStackTrace();
                Toast.makeText(getApplicationContext(), "Json error: " + e.getMessage(), Toast.LENGTH_LONG).show();
            }

        }
    }, new Response.ErrorListener() {

        @Override
        public void onErrorResponse(VolleyError error) {
            Log.e(TAG, "Login Error: " + error.getMessage());
            Toast.makeText(getApplicationContext(),
                    error.getMessage(), Toast.LENGTH_LONG).show();
            hideDialog();
        }
    }) {

        @Override
        protected Map<String, String> getParams() {
            // Posting parameters to login url
            Map<String, String> params = new HashMap<String, String>();
            params.put("email", email);
            params.put("password", password);

            return params;
        }

    };

    // Adding request to request queue
    AppController.getInstance().addToRequestQueue(strReq, tag_string_req);
}
private void checkLogin(最终字符串电子邮件,最终字符串密码){
//用于取消请求的标记
String tag\u String\u req=“req\u login”;
设置消息(“登录…”);
showDialog();
StringRequest strReq=新的StringRequest(Method.POST,
AppConfig.URL\u登录,新建响应.Listener(){
@凌驾
公共void onResponse(字符串响应){
Log.d(标记“登录响应:+Response.toString());
hideDialog();
试一试{
JSONObject jObj=新的JSONObject(响应);
如果(作业有(“用户”)){
//用户已成功登录
//创建登录会话
session.setLogin(true);
JSONObject user=jObj.getJSONObject(“用户”);
stringuid=user.getString(“id_user”);
字符串uname=user.getString(“名称”);
字符串uemail=user.getString(“电子邮件”);
String-utoken=user.getString(“用户令牌”);
//在用户表中插入行
db.addUser(uname、uemail、uid、utoken);
//开展主要活动
意向意向=新意向(LoginActivity.this,
活动(1.课堂);
星触觉(意向);
完成();
}否则{
JSONObject jOsbj=新的JSONObject(响应);
TextView scss=(TextView)findViewById(R.id.loginerror);
scss.setText(jOsbj.getInt(“代码”);
字符串errorMsg=scss.getText().toString();
Toast.makeText(getApplicationContext(),
errorMsg,Toast.LENGTH_LONG).show();
}
}捕获(JSONException e){
//JSON错误
e、 printStackTrace();
Toast.makeText(getApplicationContext(),“Json错误:+e.getMessage(),Toast.LENGTH_LONG).show();
}
}
},new Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
Log.e(标记“登录错误:+Error.getMessage());
Toast.makeText(getApplicationContext(),
error.getMessage(),Toast.LENGTH_LONG).show();
hideDialog();
}
}) {
@凌驾
受保护的映射getParams(){
//将参数发布到登录url
Map params=新的HashMap();
参数put(“电子邮件”,电子邮件);
参数put(“密码”,密码);
返回参数;
}
};
//将请求添加到请求队列
AppController.getInstance().addToRequestQueue(streq,标记字符串请求);
}

以下是JSONResponse-

{
    "code": 401,
    "message": "some message text"
}
你可以将其解析如下-

  • 假设您在Inputstream中有url响应,然后您在stringBuffer缓冲区中读取它,如下所示-

    StringBuffer buffer = new StringBuffer();
    int ch = -1;
    
    while ( (ch=in.read()) != -1){
       buffer.append((char) ch);
    }
    
  • 现在只需解析来自缓冲区的响应-

    JSONObject jObj = new JSONObject(buffer.toString());
    String message = jObj.getString("message");
    
  • U r提取的消息是字符串消息


  • 以下是JSONResponse-

    {
        "code": 401,
        "message": "some message text"
    }
    
    你可以将其解析如下-

  • 假设您在Inputstream中有url响应,然后您在stringBuffer缓冲区中读取它,如下所示-

    StringBuffer buffer = new StringBuffer();
    int ch = -1;
    
    while ( (ch=in.read()) != -1){
       buffer.append((char) ch);
    }
    
  • 现在只需解析来自缓冲区的响应-

    JSONObject jObj = new JSONObject(buffer.toString());
    String message = jObj.getString("message");
    
  • U r提取的消息是字符串消息

  • 你曾经

     jsonObject jsonobject= new jsonObject("your json string");
    
     String Code= jsonobject.getString(code);
    
     String message= jsonobject.getString(message);
    
    你曾经

     jsonObject jsonobject= new jsonObject("your json string");
    
     String Code= jsonobject.getString(code);
    
     String message= jsonobject.getString(message);
    

    JSON字符串:

    {
          "code": 401,
          "message": "some message text"
        }
    
     public class ResponseDTO{
       int code;
       String message;
        }
    
    String json = "the json you've recieved from server";
            //ASSUMSE YOUR JSON IS NOT NULL
            ResponseDTO response = new GsonBuilder().create().toJson(json.toString, ResponseDTO.class);
            if (response != null) {
                if (response.message.length() > 0 && response.message != null) {
                    //DO WHATEVER YOU WANT}
                    else{
                        //DO WHATEVER YOU WANT
                    }
                }
            }
    
    现在为响应创建一个seprate类:

    {
          "code": 401,
          "message": "some message text"
        }
    
     public class ResponseDTO{
       int code;
       String message;
        }
    
    String json = "the json you've recieved from server";
            //ASSUMSE YOUR JSON IS NOT NULL
            ResponseDTO response = new GsonBuilder().create().toJson(json.toString, ResponseDTO.class);
            if (response != null) {
                if (response.message.length() > 0 && response.message != null) {
                    //DO WHATEVER YOU WANT}
                    else{
                        //DO WHATEVER YOU WANT
                    }
                }
            }
    
    现在,如果您使用的是android studio,请将以下内容添加到gradle中,或者如果您使用的是Eclipse,您可以在链接上找到jar:

    之后,使用以下代码解析已有的json字符串:

    {
          "code": 401,
          "message": "some message text"
        }
    
     public class ResponseDTO{
       int code;
       String message;
        }
    
    String json = "the json you've recieved from server";
            //ASSUMSE YOUR JSON IS NOT NULL
            ResponseDTO response = new GsonBuilder().create().toJson(json.toString, ResponseDTO.class);
            if (response != null) {
                if (response.message.length() > 0 && response.message != null) {
                    //DO WHATEVER YOU WANT}
                    else{
                        //DO WHATEVER YOU WANT
                    }
                }
            }
    

    JSON字符串:

    {
          "code": 401,
          "message": "some message text"
        }
    
     public class ResponseDTO{
       int code;
       String message;
        }
    
    String json = "the json you've recieved from server";
            //ASSUMSE YOUR JSON IS NOT NULL
            ResponseDTO response = new GsonBuilder().create().toJson(json.toString, ResponseDTO.class);
            if (response != null) {
                if (response.message.length() > 0 && response.message != null) {
                    //DO WHATEVER YOU WANT}
                    else{
                        //DO WHATEVER YOU WANT
                    }
                }
            }
    
    现在为响应创建一个seprate类:

    {
          "code": 401,
          "message": "some message text"
        }
    
     public class ResponseDTO{
       int code;
       String message;
        }
    
    String json = "the json you've recieved from server";
            //ASSUMSE YOUR JSON IS NOT NULL
            ResponseDTO response = new GsonBuilder().create().toJson(json.toString, ResponseDTO.class);
            if (response != null) {
                if (response.message.length() > 0 && response.message != null) {
                    //DO WHATEVER YOU WANT}
                    else{
                        //DO WHATEVER YOU WANT
                    }
                }
            }
    
    现在,如果您使用的是android studio,请将以下内容添加到gradle中,或者如果您使用的是Eclipse,您可以在链接上找到jar:

    之后,使用以下代码解析已有的json字符串:

    {
          "code": 401,
          "message": "some message text"
        }
    
     public class ResponseDTO{
       int code;
       String message;
        }
    
    String json = "the json you've recieved from server";
            //ASSUMSE YOUR JSON IS NOT NULL
            ResponseDTO response = new GsonBuilder().create().toJson(json.toString, ResponseDTO.class);
            if (response != null) {
                if (response.message.length() > 0 && response.message != null) {
                    //DO WHATEVER YOU WANT}
                    else{
                        //DO WHATEVER YOU WANT
                    }
                }
            }
    


    请正确解释你的问题,你得到的是什么类型的json?你想问什么…发布你正确的api响应以更好地了解你的问题!伙计们,请重新阅读我认为很清楚,发布的完整响应也请正确解释你的问题,你得到的是什么类型的json?你想问什么…发布你正确的api响应我想知道你的问题!伙计们,请重读我认为很清楚,完整的回复也很清楚,因为如果回复只包含代码和消息,“你的json字符串”是什么?简单字符串json responseNo因为“你的json字符串”是什么如果响应仅包含代码和消息?简单字符串json responseThanks第一次听说inputstream和buffer,我将在托盘上学习它,然后尝试您的code@H4F:当然可以,伙计。快乐编码:)一点也不快乐:/I我添加了我的完整请求,你能根据我的代码再次解释一下吗,这样我就知道该放在哪里了what@H4F:让我们继续聊天哎呀!这个房间是只读的,只有声誉20的用户才能参加。第一次听说inputstream和buffer时,我会用托盘来学习,然后试试你的code@H4F:当然可以,伙计。快乐编码:)一点也不快乐:/I我添加了我的完整请求,你能根据我的代码再次解释一下吗,这样我就知道该放在哪里了what@H4F:让我们继续聊天室操作中的e!此聊天室为只读;仅限具有20