【问题标题】:org.json.JSONException: Value success<br of type java.lang.String cannot be converted to JSONObject androidorg.json.JSONException: value success<br of type java.lang.String cannot be convert to JSONObject android
【发布时间】:2014-05-11 11:57:24
【问题描述】:

在这里,我正在尝试从 PHP 服务器获取响应。我在 logcat 中的回复是这样的

05-11 08:04:43.760: E/IMAGE_RESPONSE(10577): 成功

05-11 08:04:43.760:E/IMAGE_RESPONSE(10577):警告:无法修改标头信息 - 标头已由(输出开始于 /home/swapclon/rails2.swapclone。 com/eventdemo/upload.php:14) 在 /home/swapclone/rails2.swapclone.com/eventdemo/upload.php20

05-11 08:04:43.760: E/IMAGE_RESPONSE(10577): {"msg":"Sucess!!","name":"logo_49152_forest.jpeg","name_old":"forest.jpeg"}

而我用于获取响应的 Android 编码是这样的..

   String response1 = EntityUtils.toString(response.getEntity());
           Log.e("IMAGE_RESPONSE",response1);
           dialog.dismiss();


           if(response1.contains("name"))
           {
               Log.e("ifff","iff");
               jsobje = parseJSON(response1); 
               if(jsobje != null) 
               {
                  String iii= jsobje.getString("name");
               }
           }

【问题讨论】:

    标签: android


    【解决方案1】:
    Here my first response get converted into JSON. But I only want to convert 
    

    问题是您的第一反应不是有效的JSON。我希望在方法中添加 JSON 解析

    public JSONObject parseJSON(String response){
    
        try {
            return new JSONObject(response);
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return null;
    }
    

    现在,您将知道响应是否为Valid JSON。所以改变你的逻辑来调用这个方法来解析JSON StringJSONObject然后访问JSON attributes如果不是null

     String response1 = EntityUtils.toString(response.getEntity());
     Log.e("IMAGE_RESPONSE",response1);
     dialog.dismiss();
     jsobje = parseJSON(response1);
     if(jsonobje != null) {
        String iii= jsobje.getString("name");
     }
    

    【讨论】:

    • 感谢您的回复.. 是的,我的第一反应不是 JSON。但我最后的回应是有效的 json。我不需要访问我的第一个和第二个响应。我只想访问我的第三个回复。我已经按照您的建议进行了尝试,但它给出了与 05-11 08:51:33.020: W/System.err(16101): org.json.JSONException: Value success
    • 添加检查 if(response1.contains("name")){ jsobje = parseJSON(response1); }
    • 仍然给出相同的异常.. 05-11 09:05:45.660: W/System.err(19151): org.json.JSONException: 值成功
    • 在这里,我只想从响应中访问名称的值。有没有办法直接访问只名字???
    • 没有。您需要检查字符串是否包含名称并仅解析该响应。发布更新的代码
    猜你喜欢
    • 1970-01-01
    • 2013-09-11
    • 2016-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多