С json_encode, есть ли способ заставить определенные значения не быть преобразованы в числовые?

При использовании PHP (5.4 / 5.5) и json_encode () у меня возникают некоторые проблемы при использовании опции JSON_NUMERIC_CHECK. Это на производственной системе, поэтому я не могу просто удалить опцию, так как это изменит весь ответ и прервет синтаксический анализ клиента.

Образец кода:

$var = array("id" => 1195756, "hash" => "7e12");
echo json_encode($var) . "\n";
echo json_encode($var, JSON_NUMERIC_CHECK) . "\n";

Выход:

{"id":1195756,"hash":"7e12"}
{"id":1195756,"hash":7000000000000}

Позднее не то, что я хочу. «7e12» является действительным хешем для нашей системы. Я понимаю, что это также ненадежная научная запись, но как я могу заставить значение оставаться строкой?

Примечание: использование strval () не имел никакого эффекта.

2

Решение

Вместо того, чтобы использовать strval() на полях, где должны остаться строки, используйте intval() или же floatval() на полях, которые должны быть числовыми. Другими словами, дайте JSON-кодировщику правильные типы. Тогда вам не нужно JSON_NUMERIC_CHECK чтобы исправить вещи, которые должны были быть числами, чтобы начать с.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]