Я использую PhpStorm , и у меня есть несколько полностью отформатированных файлов JSON с отступами и новыми строками.
Есть ли плагин, который я могу получить для PhpStorm, который позволит мне свернуть/минимизировать все JSON в этих файлах?
Первая мысль: PHP не может сделать это сам? Просто цитирую по памяти:
$json_file = '/path/to/file.json'; /* dynamically set the name of your JSON file here */
file_put_contents($json_file, /* Write back to disk */
json_encode( /* Re-Encode to JSON */
json_decode( /* Decode original JSON object */
file_get_contents($json_file) /* Read the original JSON file from disk */
)
)
);
Пока нет защиты, но, конечно, вы можете разделить это, чтобы записать файл только в том случае, если ошибок не возникло. Читая приведенный выше код снизу вверх, вы
Поместите все это в цикл для обработки всех ваших файлов JSON:
foreach ( glob('/path/to/dir/*.json') as $json_file ) {
file_put_contents($json_file,json_encode(json_decode(file_get_contents($json_file))));
}
Нам действительно нужен плагин для того, что можно сделать с помощью одной строки? ;)
РЕДАКТИРОВАТЬ: Как отметил ComFreekjson_decode()
в своем комментарии, он работает только с UTF-8. Поэтому, если ваши файлы используют другую кодировку, вы можете добавить вызов для utf8_encode()
переноса file_get_contents()
, чтобы «самая внутренняя команда» вышеприведенного цикла читалась как utf8_encode(file_get_contents($json_file))
. для полноты:
foreach ( glob('/path/to/dir/*.json') as $json_file ) {
file_put_contents($json_file,json_encode(json_decode(utf8_encode(file_get_contents($json_file)))));
}
Комфрик
json_decode()
работает только с UTF-8 ( источник ). Если файлы уже закодированы в ASCII или UTF-8, код будет отлично работать.Иззи
Комфрик
utf8_encode()
это не то, что вы, вероятно, думаете (винить PHP). Требуется, чтобы входная строка была в формате ISO-8859-1 . Необходимо использоватьiconv()
для преобразования между кодировками символов.Иззи
микрофон
Иззи
iconv
(как предложил ComFreek) иrecode
(всегда хорошо иметь доступную альтернативу;) И кто-то должен отладить этуrealLife()
процедуру, чтобы выяснить, почему она всегда находится между #D