只要您的PHP版本实际上可以处理大整数,就意味着如果您正在运行64位版本的PHP
(在Windows以外的版本上),
json_depre则没有问题:
$json = '{"foo":9223372036854775807}';$obj = json_depre($json);$json2 = json_enpre($obj);var_dump(PHP_INT_MAX, $obj, $json2);int(9223372036854775807)object(stdClass)#1 (1) { ["foo"]=> int(9223372036854775807)}string(27) "{"foo":9223372036854775807}"如果您需要处理的整数值确实超过了PHP的
PHP_INT_MAX,那么您根本 无法
以PHP本机类型表示它们。因此,您无法解决难题。您不能使用本机类型来跟踪正确的类型,也不能替换其他类型(例如,字符串而不是整数),因为在编码回JSON时,这是模棱两可的。
在这种情况下,您将必须发明自己的机制来跟踪每个属性的正确类型,并使用自定义编码器/解码器处理此类序列化。例如,您需要编写一个自定义JSON解码器,该解码器可以解码为自定义类,例如
newJsonInteger('9223372036854775808'),而您的自定义编码器会识别该类型并将其编码为JSON9223372036854775808值。
PHP中没有内置这样的东西。



