如何在 Json Object "timestamp": value 中转换 sql 查询结果

Posted

技术标签:

【中文标题】如何在 Json Object "timestamp": value 中转换 sql 查询结果【英文标题】:How to convert sql query result in Json Object "timestamp": value如何在 Json Object "timestamp": value 中转换 sql 查询结果 【发布时间】:2017-12-15 09:43:50 【问题描述】:

我想使用 Cal-Heatmap 来可视化数据,我当前的 sql 结果返回为

[ "dateStampSecs": "1499637600", "value": "1" ]

但我想要

[ "1499637600" : 1 ]

如何将它们粘在一起?

我正在使用 Codeigniter,下面是我的 sql:

public function get_calData()

        $this->db->select('unix_timestamp(STR_TO_DATE(date_start, "%Y-%m-%d")) dateStampSecs,count(*) as value');
        $this->db->from('calendar');
        $query = $this->db->get()->result();


        print json_encode($query,JSON_PRETTY_PRINT);
    

【问题讨论】:

【参考方案1】:

希望能成功

 $query = json_decode($query ,true);
    $query = [$query['dateStampSecs']=>$query['value']];
    dd(json_encode($query));`

【讨论】:

【参考方案2】:
$dateStampSecs = array_column($query, "dateStampSecs");
$value = array_column($query, "value");
$result = array_combine($dateStampSecs, $value);
print json_encode($result,JSON_PRETTY_PRINT);

【讨论】:

谢谢,这是我要找的那个。【参考方案3】:

这样试试

$finalData='';
foreach ($query as $data)
    $finalData[][$data['dateStampSecs']]=$data['value'];

$finalData=json_encode($finalData);
dd($query,$finalData);     

它将输出为

【讨论】:

SQL 已经返回一个数组,因此解码不起作用。【参考方案4】:

你必须像下面这样回显结果

echo json_encode($query);

退出();

【讨论】:

以上是关于如何在 Json Object "timestamp": value 中转换 sql 查询结果的主要内容,如果未能解决你的问题,请参考以下文章

C# list<object>和json互转

Android开发 解析JSON数据格式 如何去掉JSON数

("[object Promise]") 不能序列化为 JSON

object` ("[object Response]") 不能序列化为 JSON?

数组操作object转json

json显示java的date显示[object object]