我正在为使用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}]}]
我做错了什么?是否总是引用键?有什么方法吗?
答案 0 :(得分:1)
来自对象
对象结构表示为围绕零个或多个名称/值对(或成员)的一对花括号。名称是一个字符串。
来自Strings
字符串以引号开头和结尾。
所以我会说根据标准:是的,你应该总是引用密钥。 Maby你可以尝试在javascript中逃脱该键吗?将它们存储在一个值中并删除所有非数字字符?
类似的东西:
myJsonKey = myJsonKey.replace(/\D/g,'');