json_encode()不能对Inf和NaN进行json编码


json_encode() Inf and NaN cannot be JSON encoded

我正在将数组编码为JSON,下面是它给出的情况Inf和NaN不能是JSON编码的错误

$test = ['key' => '6E01400'];
json_encode($test, JSON_NUMERIC_CHECK | JSON_PRETTY_PRINT);

我知道它把键中的"E"视为指数,并试图转换成6.0 E+1400之类的数字……不过我不知道也不确定。

无论如何,对于像这样的特殊情况,我可以避免这种转换吗?我真的需要在这里使用JSON_NUMERIC_CHECK选项,有线索吗?

在PHP 5.5.0及更高版本中有一个解决方法,这样您仍然可以获得JSON输出,但它确实会重写您的数据。

如果要取回JSON_ERROR_INF_OR_NAN,则可以在json_encode上设置JSON_PARTIAL_OUTPUT_ON_ERROR选项。PHP文档说,在NAN或INF值的情况下,"0将被编码在这些特殊数字的位置。"