Я написал больше PHP, чем любой другой язык, сначала как разработчик плагинов WordPress, а затем создаю серверные части SaaS в Ларавеле, и есть одна маленькая рутинная работа, которая возникает постоянно и которую я устал делать вручную. у вас есть блок JSON, образец конфигурации, ответ API, приспособление, и вам нужен как PHP-массив в вашем исходном коде. Не декодировано во время выполнения, фактически записано в файл в виде литерала. перепечатывание скобок и стрелок вручную происходит медленно, и это именно тот вид механического перевода, который должен делать инструмент. поэтому я встроил один в Toolz.dev, и это руководство к нему.
TL;DR: Инструмент Преобразователь массива JSON в PHP анализирует документ JSON и сериализует его как литерал массива PHP, который можно вставить прямо в файл. Объекты JSON становятся ассоциативными массивами
=>массивы JSON становятся индексированными массивами, а скаляры сопоставляются с их эквивалентами PHP. Выберите короткий[]или классикаarray()синтаксис, установите отступ и, при необходимости, оберните результат в a$variable = [...];назначение. Он работает полностью на стороне клиента: нет загрузки, нет регистрации, работает в автономном режиме.
Что такое преобразователь массива JSON в PHP?
Преобразователь массива JSON в PHP превращает документ JSON в эквивалентный литерал массива PHP Объект JSON становится ассоциативным массивом, записанным с помощью => оператор, массив JSON становится индексированным массивом, а скалярные типы отображаются напрямую: строка JSON становится однокотируемой строкой PHP true а false оставайся прежним, null остается null, и числа сохраняют свою ценность. вложение сохраняется на любой глубине, поэтому глубоко структурированный объект JSON выходит в виде глубоко структурированного массива PHP с той же формой.
Причина, по которой это полезно, заключается в том, что массивы JSON и PHP описывают одно и то же, дерево ключевых и упорядоченных значений с разной пунктуацией. JSON использует двоеточия и скобки; PHP использует => и скобки. Перевод между ними - это чистая механика, а механика подвержена ошибкам, если это делается вручную, особенно с вложенными структурами, где одна неуместная скобка ломает файл. конвертер выполняет перевод детерминированно и возвращает вам действительный PHP.
Стоит четко понимать, что это не так. Это не так json_decode. PHP отлично читает JSON во время выполнения, и когда ваши данные поступают в виде строки, декодирование - это правильный ход. Этот инструмент предназначен для другого случая, когда вы хотите, чтобы массив жил в самом исходном коде.
Почему бы просто не использовать json_decode?
Это первый вопрос, который задает каждый разработчик PHP, и он правильный. json_decode($string, true) анализирует строку JSON в массиве PHP, и руководство PHP документирует её как стандартный способ использования JSON. если ваш JSON - это данные, которые поступают во время выполнения, из HTTP-запроса, очереди, файла, который вы читаете, то json_decode это именно то, что вам следует использовать, и ни один генератор кода не может быть рядом с ним.
Конвертер предназначен для другой ситуации: когда JSON не данные времени выполнения, а что-то, что вы хотите обязать к коду. несколько конкретных случаев из моей собственной работы.Массив конфигурации по умолчанию, который поставляется с плагином и должен быть читаемым и редактируемым в источнике. Таблица поиска, скажем, карта кодов стран к именам, которые вы вставляете один раз и никогда не извлекаете. Тестовое приспособление, которое должно быть буквальным, чтобы тест был автономным и не зависел от чтения файла. начальное значение для миграции базы данных. пример в документации, которая должна быть копировальным PHP, а не JSON.
Во всех этих случаях декодирование строки JSON по каждому запросу было бы расточительным и скрывало бы данные за строковым литералом, где ваш редактор не может его сложить, ваш линтер не может его проверить, а рецензент не может прочитать его как PHP. Запись массива в исходный код решает, что. Конвертер - это самый быстрый способ перейти от выборки JSON к этому литералу.
Вот решение в одной таблице.
| положение | обычай | почему |
|---|---|---|
| JSON поступает во время выполнения в виде данных | json_decode($json, true) |
Разбор - это работа; сохраняйте динамику |
| JSON - это конфигурация, приспособления, семена, примеры | Преобразователь массива JSON в PHP | Зафиксируйте читаемый литерал в исходном коде |
| Вам нужно, чтобы JSON снова вышел из значения PHP | json_encode($array) |
Обратное направление |
У вас есть PHP serialize() струна |
инструмент unserialize | Это совершенно другой формат |
В чем разница между короткими [] а array() синтаксис?
Они производят одинаковые массивы; различаются только скобки. Короткий синтаксис использует [ а ] и был доступен с PHP 5.4, который сейчас является древней историей, поэтому для любой современной кодовой базы короткий синтаксис является по умолчанию и тот, к которому я обращаюсь. классика array() form работает в каждой когда-либо выпущенной версии PHP, и это единственная причина, по которой вы все еще выбираете ее: вы ориентируетесь на среду выполнения старше PHP 5.4 или кодовую базу, руководство по стилю которой требует длинной формы.
Инструмент позволяет переключаться между ними без повторного вставки вашего JSON, поэтому, если вы вносите свой вклад в более старый проект, вы можете сопоставить его домашний стиль в один клик. Мой совет для чего-то нового - это короткий синтаксис, и PSR-12, современный стиль кодирования PHP, написан вокруг него.
Как обрабатываются строки и специальные символы?
Это та часть, которая кусает людей, которые пишут свой собственный быстрый конвертер, поэтому стоит объяснить, Инструмент излучает строки как PHP одноцитированные литералы, Внутри одиночных кавычек, PHP относится почти к каждому символу буквально; единственные два, которые являются особенными, это обратная косая черта и сама одиночная кавычка. Таким образом, конвертер уходит именно из этих двух, обратная косая черта становится двумя обратными косая черта, а одна кавычка получает предыдущую обратную косую черту, и это оставляет все остальное в покое.
Это имеет приятное последствие. новая строка внутри строки JSON проходит как настоящая новая строка внутри строки PHP с одной кавычкой, которая действительна и точно сохраняет символ. Вы не получаете искажения, которые вы бы сделали, если бы инструмент наивно пытался применить escape-последовательности с двумя кавычками. Строка JSON, как O'Brien становиться 'O\'Brien'и такой путь Windows C:\Users становиться 'C:\\Users', оба из которых являются правильными PHP. Если вы когда-либо отлаживали файл конфигурации, в котором апостроф в значении молча нарушал синтаксис, вы поймете, что это обрабатывается для вас.
Как использовать конвертер?
Поток состоит из четырех шагов Вставьте объект или массив JSON во входное поле; если вы хотите сначала увидеть форму вывода, загрузите образец. выберите синтаксис массива, короткий [] или array(). Установите отступ в 2 пробела, 4 пробела или вкладку, чтобы он соответствовал вашему проекту, и при необходимости введите имя переменной, чтобы обернуть выходные данные как $config = [...]; с задней точкой с запятой, готовой к падению в файл. Затем нажмите Конвертировать и скопировать результат.
Если JSON недействителен, инструмент сообщает сообщение об ошибке парсера's, а не выходит из строя молча, поэтому быстро можно найти случайную конечную запятую или нецитируемый ключ. И поскольку все работает в вашем браузере, вы можете вставить реальный ответ API или частную конфигурацию, не выходя из машины, что имеет значение, когда значения не являются чем-то, что вы отправите на случайный сервер. Эта модель на стороне клиента такая же, что и на остальной части сайта, описанная в онлайн-инструменты конфиденциальности данных гид.
Как это сочетается с другими инструментами JSON?
Преобразователь массива JSON в PHP является одним из членов небольшого семейства трансформаторов JSON на сайте, и они имеют одно и то же ядро синтаксического анализа. Когда вы хотите сначала привести в порядок JSON, Форматтер JSON будет отступать и проверять его. когда вам нужны те же данные, что и интерфейс TypeScript вместо PHP, Конвертер JSON в TypeScript выводит типы. Когда целью является электронная таблица или загрузка базы данных, Преобразователь JSON в CSV сплющивает его в ряды, и JSON в YAML конвертер обрабатывает форматы конфигурации, предпочитающие YAML.
В частности, для разработчиков PHP стоит знать соседа инструмент unserialize, который обрабатывает PHP и #39;s собственный serialize() формат. это чудовище, отличное от JSON, формата проводной связи, специфичного для PHP, который вы найдете в данных сеанса и некоторых значениях опций WordPress, и эти два инструмента охватывают два способа, которыми структурированные данные обычно отображаются в проекте PHP. Если вы работаете в стеке, Набор инструментов для веб-разработчиков обзор показывает, как эти части складываются вместе и Инструменты повышения производительности разработчик направляющая охватывает более широкий набор.
Рабочий пример из рабочего процесса WordPress и Laravel
Позвольте мне сделать это конкретным с двумя местами, в которые я попал больше всего. в плагине WordPress вы часто отправляете массив настроек по умолчанию, который посевает таблицу параметров при активации. во время разработки эта структура часто начинает жизнь как образец JSON, может быть, экспортируется из пользовательского интерфейса настроек или набросается при разработке схемы. Вместо того, чтобы вручную переводить ее, я вставляю JSON в преобразователь, выбираю короткий синтаксис и отступ в 4 пространствах, чтобы соответствовать стилю плагина и стилю #39;s, типу defaults как имя переменной и вернитесь $defaults = [ ... ]; это падает прямо в a get_default_settings() функция. клавиши остаются читаемыми, рецензент может видеть форму в diff, и нет декодирования времени выполнения на каждой загрузке страницы.
Сторона Laravel похожа, но отображается в конфигурациях и сеятелях. файл конфигурации возвращает большой ассоциативный массив, и у меня регулярно есть версия JSON некоторых сторонних сопоставлений, таблица валют, набор флагов функций, список планов, который должен стать этим массивом. конвертер превращает JSON в литерал, я заворачиваю его в return [ ... ]; файл конфигурации ожидает, и теперь значение представляет собой первоклассный PHP, с помощью которого кэшируется платформа config:cache вместо того, чтобы анализироваться со строки. Для сеялок базы данных работает тот же трюк: вставьте JSON своих выборочных строк, получите массив и подайте его в insert(), йо-
Причина, по которой я опираюсь на конвертер, а не на json_decode(file_get_contents(...)) в этих пятнах не лень, это то, что фиксация литерала делает данные частью обзора кода, частью статического анализа и частью истории версий в форме, которую читает человек. Файл JSON, расположенный рядом с кодом, невидим для линтера PHP; массив в источнике не является. Когда данные являются фиксированной частью приложения, а не вводятся в него, эта видимость стоит одноразового преобразования.
Есть также угол документации, который я недооценивал, пока я не начал писать больше руководств. когда вы хотите показать пример PHP в README или базе знаний, JSON-блоб не является копировально-вставляемым PHP, и читатели, которые хватают его, наткнулись на синтаксическую ошибку. Проведение его через конвертер сначала означает, что пример в ваших документах является реальным, управляемым PHP, который читатель может заглянуть в файл и увидеть работу, что является мелочью, которая незаметно повышает качество документации.
О каких пределах стоит знать?
Несколько честных рёбер. самый большой - это числовая точность, и это свойство анализа JSON в целом, а не этого инструмента в частности. конвертер анализирует ваш JSON с помощью браузера & #39;s парсера JSON, который представляет числа как плавающие с двойной точностью. целые числа от примерно 2 до 53-й степени, шестнадцатизначные цифры, теряют точность во время анализа, прежде чем инструмент когда-либо их увидит. если вы конвертируете JSON с очень большими целочисленными идентификаторами, относитесь к ним как к строкам в JSON, чтобы сохранить их точными. Каждый конвертер на основе JSON.parse разделяет этот предел; инструмент, который утверждал, что в противном случае будет лгать.
Во-вторых, принуждение ключа массива PHP. PHP незаметно преобразует строковый ключ, который выглядит как целое число, в фактический целочисленный ключ. конвертер записывает объектные ключи в виде цитируемых строк, что явно и правильно, но имейте в виду, что PHP может обрабатывать сам '0' а 0 как та же самая клавиша во время выполнения Это имеет значение только для объектов, ключи которых являются числовыми строками, что редко, и поведение PHP's, а не инструмент's.
В-третьих, пустые контейнеры. пустой объект JSON {} и пустой массив JSON [] оба становятся [] в PHP, потому что массив PHP не может различить эти два. Это настоящая двусмысленность в отображении, а не ярлык, и не существует конструкции PHP, которая сохраняла бы разницу.
Наконец, вывод является значением, а не оператором, если только вы не предоставляете имя переменной. без него вы получаете голый литерал, который является тем, что вы хотите при вставке в существующее выражение; с одним вы получаете полное назначение, заканчивающееся точкой с запятой. имя переменной проверяется, поэтому недопустимый идентификатор отклоняется с четким сообщением, а не создает сломанный PHP.
Часто задаваемые вопросы
Что такое преобразователь массива JSON в PHP? Преобразователь массива JSON в PHP преобразует документ JSON в эквивалентный литерал массива PHP Объекты JSON становятся ассоциативными массивами с = & gt; оператор, массивы JSON становятся индексированными массивами, а скалярные типы сопоставляются со своими аналогами PHP, так что вы можете вставить результат непосредственно в сценарий.
Как конвертировать JSON в PHP-массив? Вставьте JSON в поле ввода, выберите короткий [] или массив () синтаксис и стиль отступов, затем нажмите Convert. инструмент создает литерал массива PHP, который вы можете скопировать, при необходимости обернутый в назначение переменной, если вы вводите имя переменной.
В чем разница между синтаксисом коротких [] и массива ()? Они производят идентичные массивы; отличаются только скобки Короткий синтаксис использует [] и доступен с PHP 5.4, в то время как массив () - это более старая форма, которая работает в каждой версии PHP. Выбирайте массив () только в том случае, если вы должны поддерживать время выполнения старше PHP 5.4.
Заменяет ли это json_decode в PHP? № json_decode($json, правда) анализирует строку JSON в массив во время выполнения, что правильно, когда JSON поступает в качестве данных. Вместо этого этот инструмент записывает массив в ваш исходный код, что соответствует конфигурации, приспособлениям, начальным данным и примерам, которые должны жить в файле, а не декодироваться по каждому запросу.
Как отображаются объекты и массивы JSON? Объект JSON становится ассоциативным массивом PHP, где каждый ключ представляет собой строку с одной кавычкой, за которой следует => и его значение. массив JSON становится индексированным массивом PHP с элементами по порядку. вложение сохраняется на любую глубину точно так же, как в источнике.
Как обрабатываются строки и специальные символы? Строки излучаются как литералы с одной кавычкой PHP, поэтому только обратная косая черта и одна кавычка ускользают от предыдущей обратной косой черты. Каждый второй символ, включая настоящую новую строку, сохраняется дословно, что соответствует тому, как PHP обрабатывает строки с одной кавычкой.
мой json где-нибудь загружен? Нет. Преобразование происходит полностью в вашем браузере с использованием JavaScript на вашем устройстве. ваш JSON никогда не загружается, не регистрируется и не сохраняется, и инструмент продолжает работать с отключенной сетью после загрузки страницы.
Является ли преобразователь массива JSON в PHP бесплатным? Да. это совершенно бесплатно без регистрации, водяных знаков и ограничений использования. Преобразуйте столько документов JSON в массивы PHP, сколько вам нужно для личных или коммерческих проектов.



