Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/207.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
JSONObject在android 4.0上解析,但在早期版本上没有解析_Android_Json - Fatal编程技术网

JSONObject在android 4.0上解析,但在早期版本上没有解析

JSONObject在android 4.0上解析,但在早期版本上没有解析,android,json,Android,Json,我有一段代码,从网站获取json字符串: post.setEntity(entity); HttpResponse responsePOST = client.execute(post); HttpEntity resEntity = responsePOST.getEntity(); result = EntityUtils.toString(resEntity, HTTP.UTF_8); 这是结果中json的一个示例: {"status":"0","user_id":"123","na

我有一段代码,从网站获取json字符串:

post.setEntity(entity);
HttpResponse responsePOST = client.execute(post);  
HttpEntity resEntity = responsePOST.getEntity();
result = EntityUtils.toString(resEntity, HTTP.UTF_8);
这是结果中json的一个示例:

{"status":"0","user_id":"123","name":"test","session_code":"6f33d4ee610651530f04b1f700ebc36d"}
它在jsonlint.com上验证。我尝试使用

JSONObject jo = new JSONObject(result);
在安卓4上,代码运行良好,但在早期版本上,它提供了

org.json.JSONException: Value  of type java.lang.String cannot be converted to JSONObject
当我硬编码json字符串而不是将其联机时,它在早期版本中工作。当我记录http请求输出时,我发现除了会话代码(每次成功请求都会更改)之外,它在所有方面都是相同的,但两个会话代码的长度和格式都相同

任何人都知道这是什么原因,以及如何修复它


更新:

if (!email.isEmpty() && !password.isEmpty()){
    try {
        HttpClient client = new DefaultHttpClient();  
        String postURL = "http://www.xxxxxx.com/api/login.php";
        HttpPost post = new HttpPost(postURL);
        List<NameValuePair> postParams = new ArrayList<NameValuePair>();
        postParams.add(new BasicNameValuePair("email", email));
        postParams.add(new BasicNameValuePair("pass", password));
        UrlEncodedFormEntity entity = new UrlEncodedFormEntity(postParams, HTTP.UTF_8);
        post.setEntity(entity);
        HttpResponse responsePOST = client.execute(post);  
        HttpEntity resEntity = responsePOST.getEntity();
        result = EntityUtils.toString(resEntity, HTTP.UTF_8);
    } catch (UnsupportedEncodingException e) {
        Log.e(TAG, e.toString());
    } catch (ClientProtocolException e) {
        Log.e(TAG, e.toString());
    } catch (ParseException e) {
        Log.e(TAG, e.toString());
    } catch (IOException e) {
        Log.e(TAG, e.toString());
    }
}

if (result != null) {
    try {
        JSONObject jo = new JSONObject(result);

        switch (jo.getInt("status")) {
            case 0 : {
                userName = jo.getString("name");
                userID = jo.getInt("user_id");
                authCode = jo.getString("session_code");

                return 0;
            }

            default:
                return jo.getInt("status");
        }

    } catch (JSONException e) {
        Log.e(TAG, e.toString());
    }
}
if(!email.isEmpty()&&&!password.isEmpty()){
试一试{
HttpClient=new DefaultHttpClient();
字符串姿势=”http://www.xxxxxx.com/api/login.php";
HttpPost=新的HttpPost(postrl);
List postParams=new ArrayList();
添加(新的BasicNameValuePair(“电子邮件”,email));
添加(新的BasicNameValuePair(“pass”,password));
UrlEncodedFormEntity实体=新的UrlEncodedFormEntity(后参数,HTTP.UTF_8);
后设实体(实体);
HttpResponse responsePOST=client.execute(post);
HttpEntity当前状态=responsePOST.getEntity();
结果=EntityUtils.toString(resEntity,HTTP.UTF_8);
}捕获(不支持的编码异常e){
Log.e(标记,e.toString());
}捕获(客户端协议例外e){
Log.e(标记,e.toString());
}捕获(解析异常){
Log.e(标记,e.toString());
}捕获(IOE异常){
Log.e(标记,e.toString());
}
}
如果(结果!=null){
试一试{
JSONObject jo=新的JSONObject(结果);
开关(jo.getInt(“状态”)){
案例0:{
userName=jo.getString(“名称”);
userID=jo.getInt(“用户id”);
authCode=jo.getString(“会话代码”);
返回0;
}
违约:
返回jo.getInt(“状态”);
}
}捕获(JSONException e){
Log.e(标记,e.toString());
}
}

试试这个
result=EntityUtils.toString(resent)

您还需要在服务器端(PHP、节点等)实现UTF-8编码,以使web服务(JSON解析)在较旧的Android上正常工作(我认为版本没有问题

您可能需要检查您返回的所有类型的
响应

如果出现错误,请返回
字符串


如果每次都将
result
转换为
JSONObject
,则必须将
JSONObject
作为
字符串返回
;字符串中必须存在差异。您可以发布完整的请求+解析代码吗?它生成了以下内容:ï»{“状态”:“0”,“用户id”:“123”,“名称”:“测试”,“会话代码”:“8d76df4d5e3663fe839b4f3c57ede2e9”}我还需要utf-8编码,因为我收到需要解析为utf-8的阿拉伯语内容。您是否需要任何特殊字符作为响应,如果不需要,请服务器人员替换这些特殊字符,这将解决您的问题。另外,您需要解析为utf-8&在将该输入提供给json之前,您需要替换这些特殊字符字符,但请确保您得到相同的特殊字符作为响应。阿拉伯语字母是UTF,我必须使用UTF-8编码。我想了解的是,为什么它在冰淇淋三明治上工作得很好,而不是更早的版本,尽管JSONObject库是API级别1?!ï»-您能告诉我这是什么吗?看起来像您的内容前面有一些字符。当我使用EntityUtils.toString(Recentity)而不是EntityUtils.toString(Recentity,HTTP.UTF_8)时,会出现这些字符。