Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.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
在php中将额外的键值对添加到数组中会在Android端解析时发出JSONException提示_Php_Android - Fatal编程技术网

在php中将额外的键值对添加到数组中会在Android端解析时发出JSONException提示

在php中将额外的键值对添加到数组中会在Android端解析时发出JSONException提示,php,android,Php,Android,通常,我会向PHP服务器发送一个requet来查询mysql表的数据集,然后它会返回ANDROID来解析resonse字符串(JSONArray字符串),而不会出现问题。使用的PHP代码部分如下所示: .... if($result = mysql_query($sql, $link)) { if (mysql_num_rows($result) != 0) { while($row2 = mysql_fetch_array($result,MYSQL_ASS

通常,我会向PHP服务器发送一个requet来查询mysql表的数据集,然后它会返回ANDROID来解析resonse字符串(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数组中再添加一个键值字符串PAR:

$data['new_key'] = "new_value";
在分析新的JSONArray字符串时,android端将出现JSONArry异常提示:。。。。。(值部分为双字节汉字)

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

试试这个:

$data[]['new_key'] = "new_value";
此外,我认为您需要删除打印并用echo替换它:

echo urlencode(json_encode($data)); 

(顺便说一句,您也可以删除urlencode。)

这可能与您将$data视为顺序数组,然后是关联数组有关。你能在android端发布解析它的代码吗?你在哪一行放$data['new_key']=“new_value”;谢谢jjm!最后一个$data数组在发布到Android之前在PHP端编码为JSONArray。然后Android解析JSONArray字符串并提示错误;在while循环完成后添加。谢谢woozy!首先,我按照你的建议修改代码。Android解析JSONArray没有错误。但是,另一个JSONException提示为:org.json.JSONException:No value for new_key。从LogCat上的响应字符串的日志来看,JSONArray字符串如下:{“old_key 1”:“old_value 1”,“old_key 2”:“old_value2”,“old_key 3”:“old_value3”,…},{“new_key”:“new_value”}。看字符串的末尾,新的键/值对位于分隔的括号中,这使得它无法被JSONObject方法检测和解析。再次感谢您的进一步评论!哼。。。我以为你想创建一个像这样的JSNON数组。如果你不想,你应该使用:$data[0]['new\u key']=“new\u value”。再次感谢woozy!按照您的建议,我使用了“$data[0]['new_key']=“new_value”;”代替。也没有例外提示。。。它的虫子!
echo urlencode(json_encode($data));