0

通常,我向 PHP 服务器发布请求以查询 mysql 表的数据集,然后它将发送回 Andorid 以解析响应字符串(JSONArray 字符串)而没有问题。使用的 PHP 代码部分如下:

....
if($result = mysql_query($sql, $link))
{
    if (mysql_num_rows($result) != 0) 
    {   
      while($row2 = mysql_fetch_array($result,MYSQL_ASSOC))
      {
          $data[]=$row;
      }
    }
}

print_r(urlencode(json_encode($data))); 
if (is_resource($result)) 
mysql_free_result($result);
mysql_close($link);

但是,如果我在使用下面的 php 代码中的方法完成 sql 查询后,再向 $data 数组添加一个键值字符串:

$data['new_key'] = "new_value";

android端解析新的JSONArray String时会有JSONArry Exception提示:.....(值部分为双字节汉字)

Value {"new_key":"new_value","0":{"old_key1":"old_value1" ,"old_key2":"old_value2","old_key3":"old_value3",.....}} of type org.json.JSONObject cannot be converted to JSONArray

如果您不介意,请帮助并指出我错在哪里以及如何解决,谢谢!

4

1 回答 1

1

试试这个:

$data[]['new_key'] = "new_value";

另外我认为您需要删除 print_r 并用 echo 替换它:

echo urlencode(json_encode($data)); 

(你也可以顺便去掉urlencode。)

于 2012-05-18T12:40:47.750 回答