【问题标题】:getting error :Error parsing data org.json.JSONException: Value of type org.json.JSONArray cannot be converted to JSONObject出现错误:解析数据时出错 org.json.JSONException:org.json.JSONArray 类型的值无法转换为 JSONObject
【发布时间】:2014-04-14 20:17:18
【问题描述】:

卡住了,需要帮助。 JSON解析器无法转换数据,所以我可以使用用户名和密码登录。

jsonParser = new JSONParser();
public JSONObject loginUser(String username, String password) {
    // Building Parameters
    List<NameValuePair> params = new ArrayList<NameValuePair>();
    params.add(new BasicNameValuePair("tag", login_tag));
    params.add(new BasicNameValuePair("username", username));
    params.add(new BasicNameValuePair("password", password));
    JSONObject json = jsonParser.getJSONFromUrl(loginURL, params);
    return json;
}

PHP部分代码:

while($r = mysql_fetch_assoc($result)) {
    $json[] = $r;
}
print json_encode($json);

【问题讨论】:

  • 你认为这个错误意味着什么?
  • $json[] = $r; 表示一个数组。 JSONObject json 是一个对象。
  • loginURL 来自哪里?那个变量是什么?
  • 哦哦哦哦好的谢谢
  • 数据库的 URL @speedy1034

标签: java php android json database


【解决方案1】:

使用@njzk2 的 cmets 解决方案应该是更改您的 PHP 编码:

但你只是得到第一个:

while($r = mysql_fetch_assoc($result)) {
    $json = $r;
    break;
}
print json_encode($json);

或将您的 Java 编码更改为 JsonArray

jsonParser = new JSONParser();
public JSONArray loginUser(String username, String password) {
    // Building Parameters
    List<NameValuePair> params = new ArrayList<NameValuePair>();
    params.add(new BasicNameValuePair("tag", login_tag));
    params.add(new BasicNameValuePair("username", username));
    params.add(new BasicNameValuePair("password", password));
    // change the following line, to the correct method. Which parser do you use?
    JSONArray json = jsonParser.getJSONArrayFromUrl(loginURL, params);
    return json;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-25
    • 2017-04-12
    • 1970-01-01
    • 2015-06-13
    • 2013-09-07
    • 2013-02-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多