mysql5.7支持json数据类型。许多问题和办公文档显示了如何将键/值作为json格式保存到mysql数据库中。
我的问题是如何在直接进行选择时将键/值转换为json格式? 例如:
表格如下所示:
desc ttlsa_users\G;
*************************** 1. row ***************************
Field: uid
Type: int(11) unsigned
Null: NO
Key: PRI
Default: NULL
Extra:
*************************** 2. row ***************************
Field: username
Type: varchar(40)
Null: NO
Key:
Default: NULL
Extra:
=============================================================
并且表中有一条记录:
uid:1
username:"Jim";
我想获得像{"uid":"1","username":"jim}
这样的json格式。
如何从表中进行选择,以便数据库键可以是json键,数据库值可以是json值?
我想要这样做的原因是我需要从mysql数据库中选择数据并将它们转换为我程序中的json格式。
还有一个问题,如果数据可以传输,那么自mysql需要进行转换以来的性能如何呢?
答案 0 :(得分:2)
JSON_OBJECT([key,val [,key,val] ...])
评估一个(可能是空的)键/值对列表并返回一个 包含这些对的JSON对象。如果有任何键名,则会发生错误 NULL或参数个数是奇数。
所以你的查询是
SELECT JSON_OBJECT('uid',uid,'username',username) FROM ttlsa_users
至于性能,除非您一次获取成千上万条记录,否则无论您是在此处还是在客户端进行操作都无关紧要。如果这是一个Web应用程序,那么在所有可能的情况下,您只会获取少量记录。因此,性能主要取决于查询是否有效使用索引等。
答案 1 :(得分:0)
在php中,代码如下:
$return_arr = array();
$fetch = mysql_query("SELECT * FROM ttlsa_users\G");
while ($row = mysql_fetch_array($fetch, MYSQL_ASSOC)) {
$row_array['uid'] = $row['uid'];
$row_array['username'] = $row['username'];
array_push($return_arr,$row_array);
}
echo json_encode($return_arr);