Aller au contenu
jsonbeautifiers
Français

JSON Pretty Print

Formatez ici, ou copiez la ligne équivalente pour Python, JavaScript, jq et six autres langages.

Filtrer avec JSONPath

Syntaxe RFC 9535. Le résultat remplace le panneau depuis lequel vous avez ouvert cette fenêtre.

 

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.