向 JSON 编码数组添加其他对象

Posted

技术标签:

【中文标题】向 JSON 编码数组添加其他对象【英文标题】:Add Additional Objects to JSON Encoded Array 【发布时间】:2011-03-31 01:50:26 【问题描述】:

我目前正在使用 JSON 编码的数组来显示我的数据库中的用户,以实现自动建议功能。

看起来像这样:

$sth = mysql_query("SELECT id, name FROM users");

$json = array();

    while($row = mysql_fetch_assoc($sth)) 
        $json['name'] = $row['name'];
        $json['id'] = $row['id'];
        $data[] = $json;
    

print json_encode($data);

这会返回:

["id":"81","name":"John Doe","id":"82","name":"Jane Doe"]

我的问题有点二:

首先,我如何手动添加一个额外的对象到这个输出?例如,假设我想添加:"id":"444","name":"A New Name"

因此,它看起来像:

["id":"81","name":"John Doe","id":"82","name":"Jane Doe","id":"444","name":"A New Name"]

其次,假设我还想从单独的表中向数组中添加更多对象,例如:

$sth = mysql_query("SELECT id, title FROM another_table");

$json = array();

    while($row = mysql_fetch_assoc($sth)) 
        $json['name'] = $row['title'];
        $json['id'] = $row['id'];
        $data[] = $json;
    

print json_encode($data);

这样我可以在 JSON 数组中填充两个表,因此,在我的自动建议中显示为附加选项。

希望这是有道理的,因为我已经努力表达我想要完成的目标。

谢谢!

【问题讨论】:

为什么不在 json_encode 之前将它们添加到数组中呢?这对我来说更有意义。 【参考方案1】:

继续推送到$data 数组。

$json = array();

    while($row = mysql_fetch_assoc($sth)) 
        $json['name'] = $row['name'];
        $json['id'] = $row['id'];
        $data[] = $json;
    

$custom = array('name'=>'foo', 'id' => 'bar');
$data[] = $custom;

然后在最后,做你的json_encode。假设您不是指将其与多个 ajax 调用合并到 JS 本身中。

如果您有单独的脚本,请将它们组合到一个 php 页面中。

【讨论】:

谢谢梅德。比我想象的要容易。【参考方案2】:

这样试试:-

$temp = json_encode($json);  //$json="var1":"value1","var2":"value2"   
$temp=substr($temp,0,-1);
$temp.=',"variable":"'.$value.'"';

【讨论】:

【参考方案3】:

您可以编辑 JSON(文本),但在编码之前修改数组要容易得多。 还是我错过了什么?

【讨论】:

【参考方案4】:

我不是这些领域的专家,但我会尝试看看能否提供帮助。尝试以下方法之一:

选项1(我不知道联合在mysql中是如何工作的):

$sth = mysql_query("SELECT id, name FROM users union SELECT id, name FROM (SELECT id, title as name from another_table) as T2"); 


    $json = array(); 

        while($row = mysql_fetch_assoc($sth))  
            $json['name'] = $row['name']; 
            $json['id'] = $row['id']; 
        

    $json['name'] = 'A new name';
    $json['id'] = '444';
    $data[] = $json; 

    print json_encode($data);

我从来没有做过 PHP,所以我在做一些假设。我也从来没有用过MySql,所以有更多的假设。

选项 2:

$sth = mysql_query("SELECT id, name FROM users"); 


    $json = array(); 

        while($row = mysql_fetch_assoc($sth))  
            $json['name'] = $row['name']; 
            $json['id'] = $row['id']; 
        

$sth = mysql_query("SELECT id, title from another_table"); 


        while($row = mysql_fetch_assoc($sth))  
            $json['name'] = $row['title']; 
            $json['id'] = $row['id']; 
        

    $json['name'] = 'A new name';
    $json['id'] = '444';
    $data[] = $json; 

    print json_encode($data);

希望这会有所帮助。

【讨论】:

以上是关于向 JSON 编码数组添加其他对象的主要内容,如果未能解决你的问题,请参考以下文章

如何在 javascript 中访问多维 PHP 数组作为 json 编码的变体?

如何将数组数据编码为json?

BizTalk 2020 JSON 编码器生成对象的根数组,即以 [ ] 开头

Python之json编码

Python -- Json 数据编码及解析

Python JSON