Как обойти или заставить PHP json_decode не изменять мои очень большие целочисленные значения?

Итак, я использую php 5.2.6 в среде WAMP.

Я пытаюсь использовать функцию json_decode, чтобы преобразовать строку json в массив. JSON поступает из REST API в другом месте, поэтому я не могу контролировать форматирование строки JSON. Вот пример одной из строк json, которую я пытаюсь использовать:

[{
    "webinarKey":795855906,
    "sessionKey":100000000041808257,
    "startTime":"2011-12-16T13:56:15Z",
    "endTime":"2011-12-16T14:48:37Z",
    "registrantsAttended":2
}]

Я специально ищу здесь значение sessionKey. PHP обрабатывает значение как число с плавающей запятой, и я не могу ничего сделать, чтобы получить исходное значение.

Я пробовал следующее:

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

Я также пробовал это:

$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

Как я уже сказал, обновление до php 5.4 (где поддерживается вызов json_decode с четырьмя параметрами) не является вариантом. Пожалуйста помоги!

Спасибо!

5
задан hakre 16 June 2012 в 15:06
поделиться