Плагин PHPStorm для сворачивания JSON

Я использую PhpStorm , и у меня есть несколько полностью отформатированных файлов JSON с отступами и новыми строками.

Есть ли плагин, который я могу получить для PhpStorm, который позволит мне свернуть/минимизировать все JSON в этих файлах?

Ответы (1)

Первая мысль: 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 */
    )
  )
);

Пока нет защиты, но, конечно, вы можете разделить это, чтобы записать файл только в том случае, если ошибок не возникло. Читая приведенный выше код снизу вверх, вы

  1. прочитать исходный файл (включая отступы и т. д.) с диска
  2. декодируйте его, чтобы сделать его объектом PHP (здесь потеряны отступы и т. д.)
  3. закодируйте его обратно в JSON (без намерений, так как они были потеряны на предыдущем шаге — это приведет к однострочной строке)
  4. записать вновь созданный (однострочный) JSON обратно на диск.

Поместите все это в цикл для обработки всех ваших файлов 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, код будет отлично работать.
@ComFreek спасибо, что указали на это! Я не знал об этом, так как обычно имею дело с UTF8 только тогда, когда речь идет о JSON. Обновил мой ответ соответственно, отдав вам должное, конечно :)
Извините, что беспокою вас снова, но utf8_encode()это не то, что вы, вероятно, думаете (винить PHP). Требуется, чтобы входная строка была в формате ISO-8859-1 . Необходимо использовать iconv()для преобразования между кодировками символов.
Да, все эти неприятные подробности :) Ну, мы здесь на SoftwareRecs. Я даже не рекомендовал программное обеспечение, которое было немного граничным. Но здесь не стоит углубляться в программирование. Еще раз спасибо за указание на виновника, @ComFreek, но я думаю, что если ОП хочет пойти по этому пути и ему нужны дополнительные подробности, тогда это скорее случай переполнения стека :)
спасибо, хотя это не совсем то решение, которое я искал, его должно быть очень легко реализовать. Извините, что не вернулся раньше, как-то реальная жизнь умудрилась помешать :(
Рад, что смог помочь! Если вам действительно нужно иметь дело с другими кодировками, взгляните на iconv(как предложил ComFreek) и recode(всегда хорошо иметь доступную альтернативу;) И кто-то должен отладить эту realLife()процедуру, чтобы выяснить, почему она всегда находится между #D