一尘不染

如何对php数组进行json_encode但键不带引号

json

我试图用一些数据绘制(用Flot)饼图

var data = <?php echo json_encode($data)?>

我从中得到的结果是:

var data = [
{"label":"Crear Usuario", "data":"2"},
{"label":"Impresoras", "data":"1"},
{"label":"Problema Correo", "data":"1"},
{"label":"Requisicion Equipo", "data":"1"},
{"label":"Sitio Web", "data":"1"}
]

这里的问题是我需要带引号label并且data没有引号,我已经尝试过了,json_encode($data, JSON_NUMERIC_CHECK);但是只从数字中除去了引号。

以下是我需要的格式:

var data = [
    {label:"Crear Usuario",data:2}, ...

阅读 796

收藏
2020-07-27

共1个答案

一尘不染

首先,您必须在php中生成数组,以便数据的值是整数,而不是字符串:

我从json_encode()模拟了数组,我猜它看起来像这样(或应该这样):

$array =  array(
                array("label" => "Crear Usuario",   "data" => 2),
                array("label" => "Impresoras",      "data" => 1),
                array("label" => "Problema Correo", "data" => 1),
                array("label" => "Requisicion Equipo", "data" => 1),
                array("label" => "Sitio Web", "data" => 1)
            );

    $data = json_encode($array);
  • 请注意,2和1未加引号,因此,它们是整数,这一点很重要。

然后,您在Javascript中错过了JSON.parse(),实际上将该输出转换为json对象:

<script>
    var data = '<?php echo $data; ?>';
    var json = JSON.parse(data);
    console.log(json);
    console.log(json[0]);
</script>
  • 请注意,var data = …是单引号,因此您将php的回显捕获为字符串

console.log()为我输出的是:

[Object, Object, Object, Object, Object] // First console.log(): one object with the 5 Objects. 
Object {label: "Crear Usuario", data: 2} // secons console log (json[0]) with the first object

看起来像您所需要的,对吗?

2020-07-27