如何从这个json对象中删除逗号?

时间:2011-11-18 06:49:51

标签: php json

我有一个搜索查询

$sql="SELECT user_id,user_name,user_occupation FROM profile WHERE user_email LIKE '%peace%'";

$result=mysql_query($sql);
$jsonResult = '{"results" : [ ';
while ($data=mysql_fetch_assoc($result))
{
$jsonResult .=json_encode($data).',';
}
$jsonResult .= ']}';

echo $jsonResult;

在提到How to remove last comma (,) from array?之后,我添加了

$sql="SELECT user_id,user_name,user_occupation FROM profile WHERE user_email LIKE '%peace%'";

$result=mysql_query($sql);
$jsonResult = '{"results" : [ ';
while ($data=mysql_fetch_assoc($result))
{
$jsonResult .=json_encode($data).',';
}
$jsonResult .= ']}';

$finalResult = rtrim(',',$jsonResult);
echo $finalResult;

这给了我一个输出......

{"results" : [ {"user_id":"2","user_name":"peace","user_occupation":"Web Developer"},  
               {"user_id":"3","user_name":"lover","user_occupation":"Web Developer"}
               {"user_id":"4","user_name":"User4","user_occupation":"Developer"},
               {"user_id":"5","user_name":"User5","user_occupation":"Developer"},]}

我想删除结果数组中的最后一个逗号

5 个答案:

答案 0 :(得分:5)

不是在循环中构建字符串,而是填充数组,每个元素都是结果集中的单个关联数组(行)。然后,在循环之后,只需对你构建的数组进行json_encode。

答案 1 :(得分:2)

这样做

$result=mysql_query($sql);
$jsonResult = '{"results" : [ ';
$i=0;
while ($data=mysql_fetch_assoc($result)) {
   if($i != 0){
       $jsonResult .=',';
   }
   $jsonResult .=json_encode($data);
   i++;
}
$jsonResult .= ']}';

答案 2 :(得分:1)

rtrim()从字符串末尾删除字符。当您添加]}时,逗号不再是最后一个。

在添加最后一部分之前修剪逗号:

$finalResult = rtrim(',',$jsonResult);
$finalResult .= ']}';

尽管如Christopher所说,手动构建JSON字符串并不是一个好主意。

答案 3 :(得分:0)

你可以尝试从传入的结果中填充一些数组,然后只需json编码该数组,如

..push result row arrays to $result ..
$data = array('results' => $results);
json_encode($data);

答案 4 :(得分:0)

$sql="SELECT user_id,user_name,user_occupation FROM profile WHERE user_email LIKE '%peace%'";

$result=mysql_query($sql);
$jsonResult = '{"results" : [ ';
$counter = 1;
while ($data=mysql_fetch_assoc($result))
{
if($counter!=1)
 {
 $jsonResult .= ','.json_encode($data);
 }
else
 {
 $jsonResult .=json_encode($data);
 }
$counter++;
}
$jsonResult .= ']}';
$finalResult = rtrim(',',$jsonResult);
echo $finalResult;