gpt4 book ai didi

php - 使用 PHP 和 MySQL 创建多级 JSON

转载 作者:行者123 更新时间:2023-11-29 07:37:35 25 4
gpt4 key购买 nike

我不知道如何使用 PHP 和 MySQL 创建多级 JSON 输出。

我有这个查询(针对这个问题进行了简化)

$query = "SELECT 
1 as id,
JSON_OBJECT('key1', 1, 'key2', 'abc') as json1";

我把它变成一个数组

while ($row = mysqli_fetch_assoc($result)) {
$resultArray[] = $row;
}
return $resultArray;

然后使用json_encode:

echo json_encode($result);

这让我明白了

[
{
id: "1",
json1: "{"key1": 1, "key2": "abc"}"
}
]

即,变量作为字符串返回。

我想要实现的是将变量 json_test 作为 JSON 的第二层,如下所示:

[
{
id: "1",
json1:
{
key1: 1,
key2: "abc"
}
}
]

我已尝试按照有关此站点的提示进行操作,但并不愉快:

JSON_ARRAY(GROUP_CONCAT(JSON_OBJECT('key1', 1, 'key2', 'abc'))) AS json2

给我

json2: "["{\"key1\": 1, \"key2\": \"abc\"}"]",

CAST(CONCAT('[',GROUP_CONCAT(JSON_OBJECT('key1', 1, 'key2', 'abc')),']') AS JSON) AS json3

给我

json3: "[{"key1": 1, "key2": "abc"}]"

非常感谢任何提示。

我使用的是 PHP 7.0.25 和 MySQL 5.7.20。

最佳答案

JSON_OBJECT 作为字符串返回给 PHP(如 prodigitalson 评论的那样)

您想将所有数据作为关联数组。

为此,在您发布的示例中,json1 必须通过 json_decode 传递。

while ($row = mysqli_fetch_assoc($result)) {
$row['json1'] = json_decode( $row['json1'], true ); // <----
$resultArray[] = $row;
}
return $resultArray;

现在你应该得到想要的结果:

echo json_encode($resultArray);

关于php - 使用 PHP 和 MySQL 创建多级 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47996806/

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