JSON输出文件格式

时间:2018-06-25 12:27:02

标签: php arrays json mysqli

我正在使用Canvasjs图表从PHP / MySQL进行绘图。除了创建JSON文件之外,一切都按预期进行。

Canvasjs要求JSON文件如下所示:

callback({  
   "dps":
[{"division":"Xaxis VALUE","units":Yaxis VALUE}]
})

但是,创建我的JSON文件时是

[{"division":"Xaxis VALUE","units":Yaxis VALUE}]

我想知道的是如何从脚本中的sjon文件中添加开始标记和结束标记。

这是我创建JSON文件的代码的最后一部分:

$output_data= array();
    while($row = mysqli_fetch_array($result))
    {
        $output_data[] = array(
                                'division' => $row["division"],     
                                'units' => $row["units"]

                                );
    }

return json_encode($output_data, JSON_NUMERIC_CHECK);    
echo json_encode($output_data, JSON_NUMERIC_CHECK);   
}




$file_name = 'myresult2'.'.json';

if(file_put_contents($file_name, get_data()))
{
    echo $file_name. 'file created';
}
else
{
  echo 'Error';  
}

?>

其他数据: 这是生成图形的代码。

<script>

var chart = null;
var dataPoints = [];

window.onload = function() {



chart = new CanvasJS.Chart("chartContainer", {
    animationEnabled: true,
    theme: "light",
    title: {
        text: "Graph Header"
    },
    axisY: {
        title: "% Verified",
        titleFontSize: 12,
        labelFontSize: 12,
        valueFormatString: "#.##%"      

    },
    axisX: {
        title: "Division",
        titleFontSize: 12,
        labelFontSize: 12
    },    
    data: [{
        type: "column",
        yValueFormatString: "#.##%",
        dataPoints: dataPoints
    }]
});


$.getJSON("myresult.json?callback=?", callback);    

}

function callback(data) {   
    for (var i = 0; i < data.dps.length; i++) {
        dataPoints.push({
            label: data.dps[i].division,
            y: data.dps[i].units
        });
    }
    chart.render(); 
}

</script>

2 个答案:

答案 0 :(得分:0)

请尝试

// change this
$output_data[] = array(

// to this
$output_data['dps'][] = array(

答案 1 :(得分:0)

您需要做的是使用名为dps的键将创建的数组封装在一个新数组中。

因此,在您的while循环之后,您应该执行以下操作

$json_data['dps']=$output_data;

return json_encode($json_data, JSON_NUMERIC_CHECK);