Различные сторонние компании вынуждают нас использовать нестандартный код и производить нестандартный выпуск.
Мы используем стандартный json_encode()
для вывода JSON-переменной в JS / HTML, которая выглядит так:
"custom":{"1":2,"2":7,"3":5}
Теперь они говорят нам, что это не работает для них, они нуждаются в этом так:
"custom":{"1":"2","2":"7","3":"5"}
Могу ли я заставить PHP обернуть кавычки arround номерами? Может быть, использовать cast (string)
когда мы создаем объект перед кодированием?
В основном, нам нужна противоположная опция bitflag:
JSON_NUMERIC_CHECK (integer)
Encodes numeric strings as numbers. Available since PHP 5.3.3.
Но я сомневаюсь, что это существует.
Полагаю, вам нужно исправить это самостоятельно. Я не могу придумать встроенную функцию, но вы можете написать свой собственный:
function stringify_numbers($obj) { foreach($obj as &$item) if(is_object($item) || is_array($item)) $item = stringify_numbers($item); // recurse! if(is_numeric($item) $item = (string)$item; return $obj; }
Теперь вы можете использовать json_encode(stringify_numbers($yourObject))
Кажется, что использование свойств (string)
работает.
$custom = array( '1' => (string)$property, // ... );
Если вы создаете данные из массива, вы можете использовать
array_map('strval', $data);
// upd
вероятно, вам нужно назвать его рекурсивным.