Así que estoy usando php 5.2.6 en un entorno WAMP.¿Cómo moverse o hacer que PHP json_decode no altere mis valores enteros muy grandes?
Estoy tratando de usar la función json_decode para hacer una cadena json en una matriz. El JSON proviene de una API REST en otro lugar, por lo que no tengo control sobre el formato de la cadena JSON. Aquí está un ejemplo de una de las cadenas JSON que estoy tratando de usar:
[{
"webinarKey":795855906,
"sessionKey":100000000041808257,
"startTime":"2011-12-16T13:56:15Z",
"endTime":"2011-12-16T14:48:37Z",
"registrantsAttended":2
}]
Estoy especialmente después de que el valor SessionKey aquí. PHP trata el valor como un flotante y parece que no puedo hacer nada para recuperar el valor original.
he probado el siguiente:
json_decode($json, true, 512, JSON_BIGINT_AS_STRING);
# This produces the following error because my php version isn't up to snuff and I
# can't upgrade to the version required
# Warning: json_decode() expects at most 2 parameters, 4 given
También he intentado esto:
$json_obj = json_decode($json, true);
number_format($json_obj[0]["sessionKey"], 0, '.', '');
# This results in precision issues where the value was 100000000041808257
# but is number_formated out as 100000000041808256
Como dije, la actualización a php 5.4 (donde se soporta la llamada json_decode 4 parámetros) no es una opción. ¡Por favor ayuda!
Gracias!
Creo que hay un duplicado aquí en SO en algún lado, podría valer la pena buscar –
Puede consultar esta pregunta. Algunas personas enumeraron las soluciones después de que se haya devuelto el JSON pero antes de que se descodifique. http://stackoverflow.com/q/2907806/2863 –