通过json_encode

时间:2015-05-30 22:34:52

标签: php json highcharts

我正在为使用Highcharts.js的状态仪表板构建数据,并使用ajax加载它,但是当使用json_encode时,我的时间戳被引用,这意味着Highcharts会对它们进行扼流。

代码是:

$responseData = array();
foreach ($monitors as $monitor => $data) {
    foreach (array_reverse($data['responsetime']) as $responsetime) :
        $responses[] = array(strtotime($responsetime['datetime'])*1000 => $responsetime["value"]);
    endforeach;
    $responseData[] = array('name' => $data['friendlyname'], 'data' => $responses);
}
$responseData = json_encode($responseData,JSON_NUMERIC_CHECK);

使用JSON_NUMERIC_CHECK可以防止值出现问题,但仍会引用密钥(时间戳)。

示例输出:

[{"name":"Series 1","data":[{"1432933860":1622},{"1432935660":1458},{"1432937461":1388}]},{"name":"Series 2","data":[{"1432933860":1622},{"1432935660":1458},{"1432937461":1388}]}]

期望的输出:

[{"name":"Series 1","data":[{1432933860:1622},{1432935660:1458},{1432937461:1388}]},{"name":"Series 2","data":[{1432933860:1622},{1432935660:1458},{1432937461:1388}]}]

我做错了什么?是否总是引用键?有什么方法吗?

1 个答案:

答案 0 :(得分:1)

http://json.org/

来自对象

  

对象结构表示为围绕零个或多个名称/值对(或成员)的一对花括号。名称是一个字符串。

来自Strings

  

字符串以引号开头和结尾。

所以我会说根据标准:是的,你应该总是引用密钥。 Maby你可以尝试在javascript中逃脱该键吗?将它们存储在一个值中并删除所有非数字字符?

类似的东西:

myJsonKey = myJsonKey.replace(/\D/g,'');