是否有可能json_encode在PHP中未定义的值?

时间:2014-01-29 00:51:35

标签: javascript php json undefined morris.js

我正在尝试对变量进行json编码,使其值为undefined,如javascript关键字undefined。我试图谷歌这一点,但显示的唯一结果是人们在他们的PHP脚本中得到错误,实际函数json_encode是未定义的。有办法做undefined吗?要对值NULL进行编码,它只是null没有引号。在php中使用"undefined"将其视为字符串,当然undefined不起作用,因为php认为它是一个常量。

我在javascript中试过这个:

JSON.stringify([undefined,null]);

但它返回了

[null,null]

甚至可以对值undefined进行编码?

我问的原因是我正在使用morris.js图表​​库,当您的折线图缺少数据点时,它处理的null值与undefined值不同,我想要它们被处理为undefined。我意识到我可以通过我的JSON对象循环并将所有null转换为undefined s,但我想知道是否有可能编码undefined

通常,在某些情况下,undefined的处理方式可能与null不同,因此适用于所有这些情况。

谢谢!

1 个答案:

答案 0 :(得分:5)

没有。 JSON不支持undefined的值。最近的亲戚将是nullfalse。根据{{​​3}},有效的JSON值为:字符串,数字,对象,数组,truefalsenull

此外,你如何检查它在物体中的存在? 1

var a = {"key1":undefined,"key2":"value2"};
var b = {"key2":"value2"};
if(typeof(a.key1) == typeof(b.key1)){
    alert('absent in both!');
}

请参阅the specification

如果您希望未定义属性,请将其删除,例如在PHP json_encode之前使用my fiddle

$a = array('key1' => null, 'key2' => 'value2');
unset($a['key1']);
json_encode($a); // {"key2":"value2"}

1 您可以使用unset循环。