【问题标题】:JSON Output File FormatJSON 输出文件格式
【发布时间】:2018-06-25 12:27:01
【问题描述】:

我正在使用 Canvasjs Charts 从 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>

【问题讨论】:

    标签: php arrays json mysqli


    【解决方案1】:

    请尝试

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

    【讨论】:

    • 这将在while循环中每次覆盖$output_data['dps']
    • 抱歉,我修正了错字。复制和粘贴并不总是你的朋友。
    • 更新覆盖了所有数据,所以使用更新后的代码JSON文件为空。
    • @LeonClaassen, $output_data['dps'][] 将元素附加到数组的末尾。它不应该覆盖任何东西。您的原始代码和我的代码之间的唯一区别是将所需的 ['dps'] 元素添加到要输出为 json 的数组的开头
    • @LeonClaassen,打错字了吗?我做了同样的事情;-)
    【解决方案2】:

    您需要做的是将您创建的数组包含在一个新数组中,其中包含一个名为 dps 的键。

    所以在你的while 循环之后你应该做这样的事情

    $json_data['dps']=$output_data;

    return json_encode($json_data, JSON_NUMERIC_CHECK);

    【讨论】:

    • 谢谢@Dimitris,试过这个,但似乎没有在开头和结尾添加所需的标签。我需要整个回调字符串({ "dps": & })
    猜你喜欢
    • 1970-01-01
    • 2019-06-13
    • 1970-01-01
    • 2015-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多