JSON Pretty Print
Formatez ici, ou copiez la ligne équivalente pour Python, JavaScript, jq et six autres langages.
Rien de ce que vous collez ne quitte votre navigateur. La liste d’autorisation connect-src en fait une garantie du navigateur plutôt qu’une promesse. Vérifiez-le vous-même
Pretty print et formatage sont la même opération sous deux noms. Collez un document ci-dessus pour le faire ici, ou prenez la ligne équivalente pour le langage dans lequel vous travaillez déjà.
Les exemples ci-dessous sont les versions qui marchent vraiment, y compris les arguments que l’on découvre en général une fois que la sortie est déjà fausse.
Les arguments qui piègent tout le monde
- Le ensure_ascii de Python
- Vaut True par défaut, ce qui échappe tous les caractères non-ASCII. Un document plein de noms ou d’émojis revient sous forme de mur de séquences \u. Passez ensure_ascii=False.
- Les separators de Python à la minification
- json.dumps laisse une espace après chaque virgule et chaque deux-points sauf si vous passez separators=(",", ":") : l’appel naïf de minification ne minifie donc rien.
- L’échappement des barres obliques en PHP
- json_encode échappe les barres obliques et l’Unicode par défaut. JSON_UNESCAPED_SLASHES et JSON_UNESCAPED_UNICODE le désactivent. PHP indente aussi avec quatre espaces et ne vous laisse pas changer cela.
- L’échappement HTML de Go
- L’encodeur échappe <, > et & en \u003c et compagnie par défaut, pour une intégration sûre dans du HTML. SetEscapeHTML(false) le désactive.
- Tous font faire un aller-retour à vos nombres
- Analyser puis re-sérialiser réécrit le texte des nombres. 1.50 devient 1.5 et un identifiant de 19 chiffres perd ses derniers chiffres. Go est l’exception : json.Indent travaille sur les octets bruts.
How to do this in code
Pretty print dans neuf langages et outils.
js JavaScript
JSON.stringify(JSON.parse(text), null, 2) py Python
json.dumps(json.loads(text), indent=2, ensure_ascii=False)
# From a file, on the command line
python -m json.tool --indent 2 --no-ensure-ascii in.json out.json sh jq et le shell
jq . file.json
curl -s https://api.example.com/x | jq .
pbpaste | jq . # macOS, from the clipboard
jq -S . file.json # sorted keys, for stable diffs go Go
json.Indent reformate les octets sans décoder, donc vos nombres restent intacts.
var out bytes.Buffer
json.Indent(&out, data, "", " ")
fmt.Println(out.String()) rb Ruby
JSON.pretty_generate(JSON.parse(text)) php PHP
json_encode(json_decode($text), JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE) java Java
ObjectMapper mapper = new ObjectMapper();
Object value = mapper.readValue(text, Object.class);
String pretty = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(value); rs Rust
Activez la fonctionnalité arbitrary_precision de serde_json pour conserver le texte des nombres intact pendant l’aller-retour.
let value: serde_json::Value = serde_json::from_str(text)?;
let pretty = serde_json::to_string_pretty(&value)?; cs C#
using var doc = JsonDocument.Parse(text);
var pretty = JsonSerializer.Serialize(doc, new JsonSerializerOptions { WriteIndented = true }); Questions fréquentes
- Pretty print, embellir et formater : est-ce différent ?
- Non. Les trois désignent l’ajout d’espaces pour qu’un humain puisse lire le document. Chaque communauté a simplement retenu un mot différent.
- Comment mettre en forme du JSON dans VS Code ?
- Ouvrez le fichier et appuyez sur Maj+Alt+F sous Windows et Linux, ou Maj+Option+F sous macOS. Pour un extrait collé dans un fichier sans titre, réglez d’abord le mode de langage sur JSON, sinon le formateur ne saura pas quoi en faire.
- Comment mettre en forme une réponse curl ?
- Passez-la dans un tube : curl -s URL | jq . si vous avez jq, ou curl -s URL | python -m json.tool sinon. Ajoutez -s à curl, faute de quoi son indicateur de progression finit dans le tube.