json字符串的结构


the structure of json string

预期的json字符串为:

{
    "nodes": [
        {
            "node": {
                "field1": "Book1", 
                "field2": "Book2", 
                "field3": "Book3"
            }
        }, 
        {
            "node": {
                "field1": "Book1", 
                "field2": "Book2", 
                "field3": "Book3"
            }
        }
    ]
}

这是我的代码:

<?php
//Mysql stuff.
mysql_connect('localhost', 'root', '');
mysql_select_db('dbname');
//create a query string to use
$query = "SELECT field1, field2, field3 FROM table";
$result = mysql_query($query);
$array = mysql_fetch_assoc($result);
$node['node']=$array;
$concat['node']=array($node);
echo json_encode($concat);
?>

它只返回数组的第一个元素。

所以,当我尝试while循环时,如下所示:

while( $row = mysql_fetch_assoc( $result ) ) {
    $json[] = $row;
}
echo json_encode( $json );

它的输出是这样的:

[
    {
        "field1": "Book1", 
        "field2": "Book2",
        "field3": "Book3"
    }, 
    {
        "field1": "Book1", 
        "field2": "Book2",
        "field3": "Book3"
    }
]

我是json结构的新手,如何获得期望的json字符串?有什么想法吗?

$json['nodes'] = Array();
 ...
$json['nodes'][] = Array('node' => $row);
<?php
$array = array
(
        'nodes' => array
        (
                array
                (
                        'node' => array
                        (
                                'field1' => 'Book1',
                                'field2' => 'Book2'
                        )
                ),
                array
                (
                        'node' => array
                        ( 
                                'field3' => 'Book3',
                                'field4' => 'Book4' 
                        )                       
                )
        )
);
echo json_encode($array);
?>

这个php脚本输出需要的结构