【问题标题】:how to select keys and values from mysql database to a json format如何从 mysql 数据库中选择键和值到 json 格式
【发布时间】:2016-09-28 10:29:42
【问题描述】:

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需要进行转换,性能如何?

【问题讨论】:

    标签: mysql json database-performance


    【解决方案1】:

    使用JSON_OBJECT

    JSON_OBJECT([key, val[, key, val] ...])
    评估一个(可能为空的)键/值对列表并返回一个 包含这些对的 JSON 对象。如果有任何键名,则会发生错误 NULL 或参数个数是奇数。

    所以你的查询是

    SELECT JSON_OBJECT('uid',uid,'username',username) FROM ttlsa_users
    

    至于性能,除非您一次获取数万条记录,否则无论您是在此处还是在客户端执行此操作都无关紧要。如果这是一个 Web 应用程序,那么您很可能只会获取少量记录。因此,性能主要取决于您的查询是否使用索引等的效率。

    【讨论】:

    • 谢谢。 mysql代替程序进行json转换的性能如何?
    • 除非您一次获取数千条记录,否则无论您是在此处还是在客户端执行此操作都无关紧要
    【解决方案2】:

    在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);
    

    【讨论】:

      猜你喜欢
      • 2021-08-06
      • 1970-01-01
      • 1970-01-01
      • 2016-12-17
      • 2021-08-24
      • 2021-01-12
      • 2018-05-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多