【问题标题】:Problems with json.GetJSONArray("?") in AndroidAndroid 中 json.GetJSONArray("?") 的问题
【发布时间】:2011-11-16 19:31:26
【问题描述】:


我试图让我的代码工作。
我想建立一个mysql连接 并将带有 json 的数据发送到我的 android 应用程序。
我想它几乎可以工作,但我的 logcat 几乎在最后给了我这个警告:
“解析数据错误”值 [{“staff_phone”:“123”,“staff_name”:“fabian”等
我想我在我的 sql 脚本中做错了什么。这是脚本:

mysql_connect($db_host,$db_user,$db_pwd);
mysql_select_db($database);
$result = mysql_query("SELECT * FROM contactlijst");
$array = array();
while ($row = mysql_fetch_assoc($result)) 
{ 
array_push($array,  $row); 
}
print json_encode($array);
mysql_close();


这些是我的 java 代码:

public static JSONObject getJSONfromURL(String url){

    //initialize
    InputStream is = null;
    String result = "";
    JSONObject jArray = null;

    //http post
    try{
        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost(url);
        HttpResponse response = httpclient.execute(httppost);
        HttpEntity entity = response.getEntity();
        is = entity.getContent();

    }catch(Exception e){
        Log.e("log_tag", "Error in http connection "+e.toString());
    }

    //convert response to string
    try{
        BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
        StringBuilder sb = new StringBuilder();
        String line = null;
        while ((line = reader.readLine()) != null) {
            sb.append(line + "\n");
        }
        is.close();
        result=sb.toString();
    }catch(Exception e){
        Log.e("log_tag", "Error converting result "+e.toString());
    }

    //try parse the string to a JSON object
    try{
            jArray = new JSONObject(result);
    }catch(JSONException e){
        Log.e("log_tag", "Error parsing data "+e.toString());
    }

    return jArray;
} }

还有这个:

ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>();

  //Get the data (see above)
  JSONObject json =
    Database.getJSONfromURL("http://fabian.nostradamus.nu/Android/getcontactinfo.php");

         try{
    JSONArray contactinfo = json.getJSONArray("contactlijst");

                    //Loop the Array
            for(int i=0;i < contactinfo.length();i++){                      

                HashMap<String, String> map = new HashMap<String, String>();
                JSONObject e = contactinfo.getJSONObject(i);

                map.put("voornaam", e.getString("staff_name"));
                map.put("achternaam", e.getString("staff_lastname"));
                map.put("geboortedatum", e.getString("staff_dateofbirth"));
                map.put("adres", e.getString("staff_address"));
                map.put("postcode", e.getString("staff_address_postal"));
                map.put("woonplaats", e.getString("staff_address_city"));
                map.put("email", e.getString("staff_email"));
                map.put("telefoon", e.getString("staff_phone"));
                mylist.add(map);
        }
           }catch(JSONException e)        {
             Log.e("log_tag", "Error parsing data "+e.toString());
           }

}

那我做错了什么? 非常感谢!

【问题讨论】:

    标签: php android mysql json arrays


    【解决方案1】:

    getJSONArray() 期望得到一个值为数组的键。所以它期望 JSON 看起来更像这样:

    {"contactlijst": [{"staff_phone":"123","staff_name":"fabian"...

    如果这不起作用,请尝试验证您的 JSON 以确保其格式正确。为此,我经常使用JSONLint

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-25
      • 2016-10-19
      • 2011-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多