gpt4 book ai didi

php - mysql json_object 结果上的 json_decode 不起作用

转载 作者:行者123 更新时间:2023-11-29 10:19:18 24 4
gpt4 key购买 nike

我正在尝试对表进行查询,在该表中我想选择一些列和其他一些列作为嵌套 json 对象,例如,我想选择用户列表及其地址作为嵌套对象。

SELECT
u.first_name, u.last_name, u.age, u.phone,
JSON_OBJECT(
'zip', a.zip,
'address', a.address,
'number', a.number,
'city', a.city,
'state', a.state
) as 'address'

FROM
tb_user u,
tb_user_address a

WHERE u.id_address = a.id

预期的结果是这样的:

[
{
first_name: 'my name',
last_name: 'my last name',
... // Some other fields
address: {
zip: '987',
address: 'street name',
... // Some other fields
}
},
{
// Another user
}
]

但是当它返回时,address字段只是一个普通字符串,如下所示:address: "{'zip': '987', 'address': 'street name' , 'city': 'cityname', 'state'...};" 并且只有这个字段(使用 JSON_OBJECT 的字段)像这样返回,其他都可以。

当我从sql查询返回结果时,我这样做:

$user_list = json_decode(json_encode($query_result), true);

但这也不能解决问题。有没有办法将该字符串转换为有效的 json 对象?

最佳答案

您正在 MySQL 中创建地址 JSON 对象,因此它会作为字符串返回,其中包含其他列中的 JSON 格式数据。

在对整个结果进行 JSON 编码之前,您可以执行以下操作将其转换为 PHP 数组:

$user_list = array_map(
function ($v) { return json_decode($v['address'], true); },
$query_result
);
$user_list = json_encode($user_list);

关于php - mysql json_object 结果上的 json_decode 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49617367/

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