我正在执行一个 mysql 查询,该查询根据提供的 ID 从 3 个表中提取相关数据。 当我尝试格式化 sql 查询时,问题就出现了,以便当我将结果数组转换为 JSON 对象时,数据可以正确嵌套。
到目前为止我的 SQL 查询:
select * from Players join SchoolData on Players.School = SchoolData.ID join LocationData on SchoolData.Location = LocationData.ID where Players.ID =%d
当我 JSONify 上述查询的结果时,我得到:
{
"data": [
{
"City": "San Diego",
"Height": 77,
"ID": 7,
"Location": 7,
"Mascot": "Aztecs",
"Name": "San Diego State Aztecs",
"School": 11,
"State": "CA",
"Weight": 196
}
]
}
我试图让我的结果看起来像下面的示例,其中嵌套了从其他表中提取的数据。
{
“data”:[
{
“student”:
{
“id”:xxx-xxx-xxx,
“name”: “name1”,
“school”:
{
“id”:xxxx,
“address”:
{
“id”:xxx,
“city”: “mycity”,
“state”: “OH”
},
“name”: “myschool”,
“mascot”: “wildcats”
},
“height”: 72,
“weight”: 180
},
]
}
我一直在看FOR JSON
命令(在 SQL 中使用)而不是选择 *
我只能使用 AS
我的查询中的命令应该有助于在返回值之前处理我的标签,但不会帮助处理数据的嵌套。
我只是不确定这是在查询前还是在查询后完成的。
更新 我发现以下 mysql 函数: https://dev.mysql.com/doc/refman/5.7/en/json-creation-functions.html但我不确定这是否是我正在寻找的。p>
最佳答案
SELECT
std.id, std.name, sch.id, add.id, add.city, add.state, sch.name, sch.mascot, std.height, std.weight
FROM
student std LEFT JOIN school sch ON < join condition >
LEFT JOIN address ON < join condition >
FOR JSON AUTO
尝试这样的操作,FOR JSON AUTO 应该将其转换为您想要的 JSON 字符串。
关于mysql - 将 Mysql 返回的数组格式化为 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49635811/