我正在用Spring开发API控制器。
我有两个表,它们是一对多关系。
一个视频可以有多个产品。
我可以通过join查询选择视频和产品信息。
选择结果如下:
JSON我想返回的内容如下:
{
"videos": [{
"video_id": "V0001",
"video_nm": "Video001",
"description": "Some text",
"thumbnail": "path/img/aaa.jpg",
"reg_dt": "11-30-2019",
"products": [{
"product_id": "P0001",
"product_nm": "Product001",
"description": "Some text",
"info_url": "http://product.com"
}, ...]
}, ...]
}
Run Code Online (Sandbox Code Playgroud)
是否可以使用查询结果创建上述JSON?还是应该更改JSON格式?
要在 MySQL 中格式化 JSON,您需要使用JSON_OBJECT()函数和JSON_ARRAYAGG()函数。
\n\n类似下面的 \xe2\x80\x94 但我没有测试过。
\n\nSELECT JSON_OBJECT(\'videos\', JSON_ARRAYAGG(vid_subquery.video)) AS videos\nFROM (\n SELECT\n JSON_OBJECT(\n \'video_id\', v.video_id,\n \'video_nm\', v.video_nm,\n \'description\', v.description,\n \'thumbnail\', v.thumbnail,\n \'reg_dt\', v.reg_dt,\n \'products\', JSON_ARRAYAGG(\n JSON_OBJECT(\n \'product_id\', p.product_id,\n \'product_nm\', p.product_nm,\n \'description\', p.description,\n \'info_url\', p.info_url\n )\n )\n ) AS video\n FROM video AS v\n LEFT OUTER JOIN product AS p ON p.video_id = v.video_id\n GROUP BY v.video_id\n) AS vid_subquery\nRun Code Online (Sandbox Code Playgroud)\n\n如果这看起来太困难,那么您应该遵循注释中的建议并编写一个 Java 映射器来完成它。
\n| 归档时间: |
|
| 查看次数: |
112 次 |
| 最近记录: |