javascript - 生成类似于 nvd3 StackAreaChart 数据的嵌套 json 格式

标签 javascript php json nvd3.js angular-nvd3

我正在尝试生成一个嵌套的 json,如 nvd3 StackedAreaChart 使用:

    [
        {
            "key" : "North America" ,
            "values" : [ [ 1025409600000 , 23.041422681023] , [ 1028088000000 , 19.854291255832] ]

        },

        {
            "key" : "Africa" ,
            "values" : [ [ 1025409600000 , 7.9356392949025] , [ 1028088000000 , 7.4514668527298] ]

        },

    ]

来源:http://plnkr.co/edit/CIGW0o?p=preview

我想使用数据库中的数据。

我怎样才能实现那种json?我对嵌套 json 不太熟悉,而且我在其 json 结构中注意到的一件事是 values 对象中的值是一个普通整数。它不像“1025409600000”那样被引用。当我尝试引用它时,图表无法正确读取数据。

问题

  1. 如何生成像 nvd3 使用的嵌套 json ?我进行了一些研究,但没有任何反应。我发现了类似的东西,我猜它会的,但无法让它工作。 Here还有这个one也是。

  2. 是否可以从嵌套的 json 结构中取消引用值?如果是的话,怎么办?

这是我目前正在做的事情:

        <?php

        require_once('conn.php');

        $sql = "SELECT ua.user_id,(UNIX_TIMESTAMP(dt.transac_date)*1000) AS transac_date,
                        CONCAT(ui.fname,' ',ui.lname) AS fullname,
                        SUM((dt.item_price - dt.item_srp) * dt.sold) as profit,
                        SUM((dt.item_price) * dt.sold) as total_sales
                FROM dsp_transactions dt
                INNER JOIN user_acct ua ON dt.user_id=ua.user_id
                INNER JOIN user_info ui ON ua.ui_id=ui.ui_id
                GROUP BY ua.user_id";
        $qry = $con->query($sql);

        $data = array();
        if($qry->num_rows > 0) {
            while($row = $qry->fetch_object()) {
                $data[] = array(

                    'key' => $row->fullname,
                    'values' => $row->user_id

                    );
            }
        } else {
            $data[] = null;
        }

        $con->close();

        echo json_encode($data);

        ?>

这给了我这个值:

[{"key":"Juan Dela Cruz","values":["1461772800000","5665.00"]},{"key":"Maria Gonzales","values":["1461772800000","275.00"]},{"key":"Apolinario Mabini","values":["1461772800000","100.00"]}]

提前致谢:)

编辑

有关更多信息,我希望发生这样的事情:

         dsp      |    sales     |   profit    |     date    
    --------------+--------------+-------------+--------------
        Juan      |    500       |     100     |    04/24/2016
    --------------+--------------+-------------+--------------
        Maria     |    600       |     200     |    04/24/2016
    --------------+--------------+-------------+--------------
       Apolinario |    700       |     300     |    04/24/2016
    --------------+--------------+-------------+--------------
        Juan      |    550       |     150     |    04/25/2016

将以 json 格式返回

    [
        {
            "key" : "Juan",
            "values" : [ ["04/24/2016", "500"], ["04/25/2016", "550"] ]  // "values" loop twice because "juan" has two sales

        },
        {
            "key" : "Maria",
            "values" : [ ["04/24/2016", "600"] ]

        },
        {
            "key" : "Apolinario",
            "values" : [ ["04/24/2016", "700"] ]

        }
    ]

最佳答案

返回的用户id将被转换为字符串。您可以使用 php 将它们转换回 float :

关于javascript - 生成类似于 nvd3 StackAreaChart 数据的嵌套 json 格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36928822/

相关文章:

php - phpMyadmin 中的最大执行时间

php 数组到 javascript 对象

javascript - JS 过滤器允许带有 AND 且不带破折号的数字

php - 如何在 Phpmyadmin 上链接数据

javascript - jquery-ui-rails 可拖放功能不起作用

javascript - 读取从 PHP-JS 返回数组的计算值

java - 从 json 对象获取值(Google map 距离)

ios - 在 iOS 上使用 google api 获取 json 数据时遇到问题

javascript - 如何从 Angular 迁移到 Angular 2.?需要应对的挑战

javascript - Chrome 控制台错误 "Uncaught SyntaxError: Invalid or unexpected token"?