Конвертер JSON в массив PHP
Вставьте JSON-объект или массив и скопируйте код PHP для конфига, тестовых данных или сидера. Объекты становятся ассоциативными массивами, массивы — списками, строки берутся в кавычки и экранируются по правилам PHP.
Работает в браузере: всё, что вы вводите, никуда не отправляется.
Как пользоваться
- Вставьте JSON в поле. В примере — объект со вложенным списком и объектом.
- Выберите синтаксис (короткий [] или длинный array()), отступ и нужно ли присваивать результат переменной
$data.
- Скопируйте код PHP. Для неверного JSON показываются строка и столбец первой ошибки.
Как идёт преобразование
| JSON |
PHP |
| {“key”: value} |
[‘key’ => value] |
| [1, 2] |
[1, 2] — список |
| “текст” |
‘текст’ |
| 12, 1.5 |
12, 1.5 |
| true, false, null |
true, false, null |
| {} или [] |
[] |
Ключи всегда пишутся строками в кавычках. Каждый элемент — на своей строке с запятой в конце, как печатает массивы var_export().
Пример
JSON {"name":"Анна","tags":["математика","код"],"ok":true,"x":null} превращается в:
$data = [
'name' => 'Анна',
'tags' => [
'математика',
'код',
],
'ok' => true,
'x' => null,
];
Советы
- Пустые объекты превращаются в [] — json_decode с true тоже возвращает пустой массив. Если важно различать {} и [], декодируйте в объекты.
- Числовые строковые ключи вроде “1” пишутся как ‘1’; PHP сам превратит их в целые ключи при создании массива.
- Большие целые больше 2⁵³ теряют точность при чтении JSON в JavaScript — храните такие ID в JSON строками.
Частые вопросы
Результат такой же, как у json_decode($json, true)?
Да, структура та же: JSON-объекты становятся ассоциативными массивами, JSON-массивы — индексированными списками, null, true и false остаются как есть. Разница в том, что вы получаете исходный код PHP для вставки, а не значение во время выполнения.
Как экранируются строки?
Строки пишутся в одинарных кавычках, где PHP понимает только два экранирования: \\ и \'. Поэтому обратный слеш становится \\, а апостроф — \'. Знак доллара и остальные символы остаются буквально, без подстановки переменных. Кириллица сохраняется как есть, в UTF-8.
Короткий [] или длинный array()?
Короткий синтаксис работает во всех версиях PHP начиная с 5.4 и сегодня используется по умолчанию. array() нужен только для очень старого кода или если его требует принятый стиль.
Зачем запятые после последних элементов?
Висячие запятые в массивах PHP допустимы и делают диффы чище, когда добавляется строка. var_export() пишет массивы так же.
Что происходит с числами?
Они копируются как числа: 36 остаётся целым, 9.5 — дробным. 1.50 записывается как 1.5, а 1e3 — как 1000, потому что JSON сначала читается как числа. В коде PHP дробная часть всегда отделяется точкой.