关于php:JSONArray无法转换为JSONObject | 珊瑚贝

JSONArray cannot be converted to JSONObject


我收到以下错误:

1
Error parsing data org.json.JSONException: Value [] of type org.json.JSONArray cannot be converted to JSONObject

这是我拥有的 Android 和 PHP 代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
private void eventUpdatePoint(String eventStatus,int lat,int lon){

    JSONParser jsonParserEUP = new JSONParser();
        try
        {  
            List<NameValuePair> params = new ArrayList<NameValuePair>();
            params.add(new BasicNameValuePair(“longtitude”, Integer.toString(lon)));
            params.add(new BasicNameValuePair(“latitude”, Integer.toString(lat)));
            params.add(new BasicNameValuePair(“eventstatus”, eventStatus));
            String url_updatePoint =“http://10.0.2.2/android_connect/event_update_point.php”;
            JSONObject json = jsonParserEUP.makeHttpRequest(url_updatePoint,“POST”, params);
            Log.d(“Response”, json.toString());
        }
        catch(Exception e)
        {
            e.printStackTrace();
            Log.d(“ERROR:”,“ERROR:”    + e.getClass().getName() +“:” + e.getMessage());
        }
    }

php 代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
$response = array(); if (isset($_POST[‘longtitude’]) && isset($_POST[‘latitude’]) &&isset($_POST[‘eventstatus’])) {
    $longtitude = $_POST[‘longtitude’];
    $latitude = $_POST[‘latitude’];
    $eventstatus = $_POST[‘eventstatus’];

    $e_id=0;
    $score=0;

    require_once __DIR__ . ‘/db_connect.php’;

    $db = new DB_CONNECT();

    $result = mysql_query(“SELECT id FROM cordinates WHERE longtitude=$longtitude AND latitude=$latitude) or die(mysql_error());
    while ($row = mysql_fetch_array($result)) {

            $e_id = $row[“id”];  
        }
    $result = mysql_query(“SELECT score FROM point WHERE e_id=$e_id) or die(mysql_error());

    if (mysql_num_rows($result) > 0) {

        while ($row = mysql_fetch_array($result)) {

            $score = $row[“score”];  
        }
        if($eventstatus==“inc”)
        {  
            $score+=10;
            $result = mysql_query(“UPDATE point SET score=$score where e_id=$e_id) or die(mysql_error());  
            $response[“success”] = 1;
             $response[“message”] =“Score point increased”;
        }
        else if($eventstatus==“dec”)
        {  
            $score-=10;
            $result = mysql_query(“UPDATE point SET score=$score where e_id=$e_id) or die(mysql_error());
            $response[“success”] = 0;
             $response[“message”] =“Score point decreased”;
        }
    }
    echo json_encode($response);

我做错了什么?

  • 参考:stackoverflow.com/questions/12142238/
  • 请添加字符串,您从服务器收到问题的响应以获得更多帮助
  • @beyaz,您找到解决问题的方法了吗?


您正在使用的网络服务返回一个 JSONArray。您必须使用 JSONArray 类型的对象来存储它。您不能使用 JSONObject。

改变这一行:

1
JSONObject json = jsonParserEUP.makeHttpRequest(url_updatePoint,“POST”, params);

…到这个:

1
JSONArray json = jsonParserEUP.makeHttpRequest(url_updatePoint,“POST”, params);
  • 所以我必须为 JsonArray 实现我的 JsonParser?因为,Jsonparser 返回 Json 对象
  • 基本上,是的。我不知道你使用哪个解析器。如果您自己实现它,那么您必须修改它以将 JSON 解析为数组。如果您正在使用某个库,那么它可能有办法做到这一点 – 只需阅读文档。


记录您的回复。如果它以”[“开头并以”]”结尾,您必须将其存储在”JSONArray”类型的变量中。注意您的日志,您的回复必须是一个 “JSONArray”,因此只需将您的响应保存在 “JSONArray” 类型的变量中。

  • 我没有明白。发出 HttpRequest 时出现错误。请求时如何执行”JSONArray”类型的变量?


来源:https://www.codenong.com/15601848/

微信公众号
手机浏览(小程序)

Warning: get_headers(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

Warning: get_headers(): Failed to enable crypto in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

Warning: get_headers(https://static.shanhubei.com/qrcode/qrcode_viewid_9811.jpg): failed to open stream: operation failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57
0
分享到:
没有账号? 忘记密码?