javascript - php动态生成json

标签 javascript php json angularjs

我正在尝试将 AngularJS 与 php 后端结合起来。现在我正在尝试使用 php 生成一个 json 以将其返回到 Angular 的 http 请求。到目前为止我创建了这个 php。

$dbhost = "localhost";
$dbport = "5432";
$dbname = "fixevents";
$dbuser = "postgres";
$dbpass = "123";
$connect = pg_connect("host=" . $dbhost . " port=" . $dbport . " dbname=" . $dbname . " user=" . $dbuser . " password=" . $dbpass);

$query = "SELECT contact_firstname, contact_lastname, contact_id, contact_email FROM contact WHERE user_id = 1";
$result = pg_query($connect, $query);

$comma = '';
$json = '[';
while ($row = pg_fetch_array($result)) {
    $json .= $comma . '{';
    $json .= 'contact_firstname:"' . addslashes($row['contact_firstname']) . '",';
    $json .= 'contact_lastname:"' . addslashes($row['contact_lastname']) . '",';
    $json .= 'contact_id:' . addslashes($row['contact_id']) . ',';
    $json .= 'contact_email:[';
    $contact_email = explode(',,,', addslashes($row['contact_email']));
    $comma_email = '';
    foreach($contact_email as $email) {
        $json .= $comma_email . '"' . $email . '"';
            $comma_email = ',';
    }
    $json .= ']';
    $json .= '}';
    $comma = ',';
}
$json .= ']';

echo $json;

但是我读到了一些比我更聪明的评论:) 他们说手动创建 json 不是最好的主意。谁能告诉我如何以更时尚的方式生成此 json?我看到了一些关于 json_endode 和 array 的内容,但我不知道如何在列表中添加列表。我有一个列表,在每个列表项中我有另一个包含电子邮件的列表,因为 1 个联系人可以有更多电子邮件。 我生成的 JSON 现在看起来像这样

[{contact_firstname:"Daniel",contact_lastname:"Pacuraru",contact_id:1,contact_email:["pacurarudaniel@gmail.com","hello@pacurarudaniel.com"]},{contact_firstname:"Someone",contact_lastname:"Else",contact_id:2,contact_email:["someone.else@gmail.com"]}]

谢谢你,丹尼尔!

编辑

$myjson = array();
    while($row = pg_fetch_array($result)) {
        $json = array(
            'contact_firstname' => addslashes($row['contact_firstname']),
            'contact_lastname'  => addslashes($row['contact_lastname']),
            'contact_id'        => addslashes($row['contact_id']),
            'contact_email'     => explode(',,,', addslashes($row['contact_email']))
        );
        array_push($myjson, $json);
    }

    echo json_encode($myjson);

最佳答案

这是无效的 json(键必须使用双引号)。我的建议:只需创建嵌套的 PHP 数组(和/或对象),然后使用 json_encode 一次性编码。这样您还可以避免其他问题,例如在字符串中转义换行符。

例如:

$some_data = array(
    'something' => 10,
    'something_else' => "foo",
    'some_array' => array(1,2,3,4)
);
echo json_encode($some_data);

输出:

{"something":10,"something_else":"foo","some_array":[1,2,3,4]}

关于javascript - php动态生成json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19146922/

相关文章:

php - jquery 切换不适用于移动设备

javascript - 空 php session (if else 语句)

json - 如何将动态添加的属性(使用元类)转换为 JSON

javascript - Mustache 平面数组到嵌套元素中

javascript - 在输入上动态添加时,angular 没有评估我的对象

javascript - babel-cli 与 npm 的问题

javascript - d3.js V4 按钮缩放实现表现得很奇怪

php - 如何删除 "Warning: Unresponsive Script"

java - 从服务器搜索 json 数组的搜索栏

javascript - 如何在我的网页中嵌入具有特定名称属性的网页的一部分?