全局禁用JSON_NUMERIC_CHECK

时间:2016-07-09 13:16:28

标签: php json

是否可以在全局禁用php 5.5中的JSON_NUMERIC_CHECK? 我需要将所有编码的JSON回复视为字符串。

感谢。

2 个答案:

答案 0 :(得分:1)

禁用JSON_NUMERIC_CHECK?为什么?据我所知,这只是一个选择。如果你在没有它的情况下拨打json_encode,它就不会将号码(原始字符串)转换为整数。

的输出
echo json_encode(array('number' => '603'));
echo json_encode(array('number' => '603'), JSON_NUMERIC_CHECK);

{"number":"603"}
{"number":603}

正如所料。

如果要将数组中的所有整数转换为字符串,则应在json_encode调用之前强制转换它们。

答案 1 :(得分:0)

不,你不能 但是,使用对象是一个很好的用例,例如:

class Json 
{
    /**
     * @var int
     */
    protected $defaultOptions = JSON_NUMERIC_CHECK;


    public function encode($value, $options=0, $depth=512)
    {
        $options = 0 === $options ? $this->defaultOptions : $options;

        return json_encode($value, $options, $depth);
    }
}

$json = new Json();
print ($json->encode([ 'row_id' => '1', 'name' => 'George' ]));

因此,您可以为Json::$defaultOptions分配您想要的默认选项,并且它可以在全球范围内使用(服务)。