gpt4 book ai didi

php - 将 SQL 转换为 JSON 并保留空值?

转载 作者:行者123 更新时间:2023-11-30 22:04:00 24 4
gpt4 key购买 nike

问题:

我正在将一些 SQL 表转换为 JSON 格式,但我有一些空值没有以我想要的格式显示。当我的表中有一个 null 值时,它在转换为 JSON 时变成 "",但我希望它只说 null 而不是双引号。

代码:

$conn = new mysqli($servername, $username, $password, $dbname);
$result = $conn->query("SELECT firstname, middlename, lastname FROM nametable");

$outp = "[";
while($rs = $result->fetch_array(MYSQLI_ASSOC)) {
if ($outp != "[") {$outp .= ",";}
$outp .= '{"firstname":"' . $rs["firstname"] . '",';
$outp .= '"middlename":"' . $rs["middlename"] . '",';
$outp .= '"lastname":"' . $rs["lastname"] . '"}';
}
$outp .="]";
$conn->close();
echo($outp);

我得到的 JSON 格式:

[
{"firstname":"John", "middlename": "Timothy", "lastname":"Doe"} ,
{"firstname":"Mary", "middlename":"", "lastname":"Jane"}
]

我想要的JSON格式:(不同的部分是middlename后面的null)

[
{"firstname":"John", "middlename":"Timothy", "lastname":"Doe"} ,
{"firstname":"Mary", "middlename": null, "lastname":"Jane"}
]

编辑:我不想要这个:(因为 null 将被视为字符串)

[
{"firstname":"John", "middlename":"Timothy", "lastname":"Doe"} ,
{"firstname":"Mary", "middlename":"null", "lastname":"Jane"}
]

我尝试过的:

  • 我尝试将查询编辑为

    SELECT firstname, middlename, lastname
    FROM nametable
    WHERE (nametable->>'middlename') is null

    但它有问题,无法运行。

  • 我也试过

    SELECT firstname, middlename, lastname 
    FROM nametable
    FOR JSON AUTO, INCLUDE_NULL_VALUES

    但它也不会运行。

最终编辑:我考虑了每个人的建议,并在中间使用 if/else 语句使其工作:

$conn = new mysqli($servername, $username, $password, $dbname);
$result = $conn->query("SELECT firstname, middlename, lastname FROM nametable");

$outp = "[";
while($rs = $result->fetch_array(MYSQLI_ASSOC)) {
if ($outp != "[") {$outp .= ",";}
$outp .= '{"firstname":"' . $rs["firstname"] . '",';
if (is_null($rs['middlename']) == true)
$outp .= '"middlename":null,';
else
$outp .= '"middlename":"' . $rs["middlename"] . '",';
$outp .= '"lastname":"' . $rs["lastname"] . '"}';
}
$outp .="]";
$conn->close();
echo($outp);

最佳答案

如果您希望 JSON 打印 NULL 而不是空白,请将您的 null 字段转换为字符串

while($rs = $result->fetch_array(MYSQLI_ASSOC)) {
if ($outp != "[") {$outp .= ",";}
$outp .= '{"firstname":"'. $rs["firstname"] == null ?"null":$rs["firstname"]. '",';
$outp .= '"middlename":"'. $rs["middlename"] == null ?"null":$rs["middlename"]. '",';
$outp .= '"lastname":"'. $rs["lastname"] == null ?"null":$rs["lastname"]. '"}';
}

关于php - 将 SQL 转换为 JSON 并保留空值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42353435/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com