Estoy usando PhpStorm y tengo varios archivos JSON que están completamente formateados con sangrías y líneas nuevas.
¿Hay algún complemento que pueda obtener para PhpStorm que me permita colapsar/minificar todo el JSON en estos archivos?
Primer pensamiento: ¿No puede PHP hacer eso por sí mismo? Solo citando de mi memoria:
$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 */
)
)
);
No hay protección todavía, pero por supuesto puede dividir eso para escribir solo el archivo si no se han producido errores. Al leer el código anterior de abajo hacia arriba, usted
Ponga todo en un bucle para procesar todos sus archivos JSON:
foreach ( glob('/path/to/dir/*.json') as $json_file ) {
file_put_contents($json_file,json_encode(json_decode(file_get_contents($json_file))));
}
¿Realmente necesitamos un complemento para lo que se puede hacer con una sola línea? ;)
EDITAR: Como señaló ComFreekjson_decode()
en su comentario, solo trata con UTF-8. Entonces, si sus archivos usan un conjunto de caracteres diferente, es posible que desee agregar una llamada a utf8_encode()
para ajustarse file_get_contents()
, de modo que el "comando más interno" del ciclo anterior lea utf8_encode(file_get_contents($json_file))
. por completitud:
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)))));
}
ComFreek
json_decode()
solo trata con UTF-8 ( fuente ). Si los archivos ya están codificados en ASCII o UTF-8, el código funcionará perfectamente.izzy
ComFreek
utf8_encode()
no hace lo que probablemente crees que hace (culpe a PHP). Requiere que la cadena de entrada esté en ISO-8859-1 . Uno debe usariconv()
para convertir entre codificaciones de caracteres.izzy
micrófono
izzy
iconv
(como lo sugiere ComFreek) yrecode
(siempre es bueno tener una alternativa disponible;) Y alguien debería depurar eserealLife()
procedimiento para descubrir por qué siempre se encuentra entre #D