100 % local — vos données ne quittent jamais votre navigateur

YAML en .properties — Java le relit à l’identique

Aplatissez du YAML en fichier .properties Java. L’échappement est fait pour vous : ce que Properties.load relit est exactement ce que vous avez mis.

Instantané Privé Zéro cookie

Entrée YAML

Sortie Properties

Ce que fait cet outil

L’imbrication devient des points, les listes des indices :

db:
  host: db.example.com
  port: 5432
hosts:
  - a
  - b
db.host=db.example.com
db.port=5432
hosts[0]=a
hosts[1]=b

La forme [i] est la convention Spring, celle que la plupart des lecteurs attendent.

L’échappement est tout le travail

Un fichier .properties est d’une simplicité trompeuse, et trois de ses règles mangent des données en silence.

Une valeur qui commence par une espace. Properties.load saute les blancs après le séparateur : cle= x se relit x. La première espace est échappée — cle=\ x — et la valeur survit. Les espaces finales sont conservées telles quelles.

Une clé qui commence par # ou !. Cette ligne est un commentaire. L’entrée entière, clé et valeur, disparaît à la relecture. Ces deux caractères sont échappés quand ils ouvrent une clé.

=, : et les espaces dans une clé sont échappés aussi, ainsi que chaque antislash. Un saut de ligne dans une valeur devient \n, une tabulation \t.

Deux clés qui s’aplatissent sur le même nom

"a.b": 1
a:
  b: 2

Les deux donnent a.b. Le format ne sait pas les distinguer, et Properties.load garde la dernière : une de vos deux valeurs aurait disparu, sans rien pour le dire.

La conversion s’arrête et nomme la clé. C’est le seul cas où cet outil refuse au lieu de convertir, et c’est le cas où convertir mentirait.

Il n’y a pas de types

Tout, dans un fichier .properties, est du texte. true revient en "true", 42 en "42", et un null en valeur vide. C’est votre lecteur qui décide du sens : Boolean.parseBoolean, Integer.parseInt, et une décision sur ce que veut dire « vide ».

Un mot sur l’encodage

La sortie est du texte UTF-8, accents compris. C’est ce que lit Java moderne, et ce qu’a toujours lu Properties.load(Reader).

Mais Properties.load(InputStream) — l’appel plus ancien, et le plus répandu — lit de l’ISO-8859-1 et transformera café en charabia. Si c’est votre lecteur, passez à la surcharge Reader ou échappez les caractères non ASCII en \uXXXX avant d’expédier le fichier.

Confidentiel par conception

Tout s’exécute localement dans votre navigateur en JavaScript. Vos données ne sont jamais envoyées sur un serveur, ce qui rend l’outil sûr pour des contenus sensibles, et il fonctionne hors ligne.

Questions fréquentes

Pourquoi ma clé est-elle refusée comme doublon ?
Parce que deux chemins différents se sont aplatis sur le même nom. Une clé littérale `a.b` et un `a:` imbriqué contenant un `b:` donnent tous deux `a.b`, et un fichier .properties ne sait pas les distinguer : `Properties.load` garde la dernière et l’autre valeur disparaît. Plutôt que de choisir à votre place, la conversion s’arrête et nomme la collision.
Qu’advient-il d’une valeur qui commence par une espace ?
L’espace est échappée en `\ `. Java saute les blancs qui suivent le séparateur : `cle= x` se relit `x`, les espaces initiales envolées sans un mot. Échapper la première garde la valeur intacte ; les suivantes et les finales n’ont besoin de rien.
Le fichier conserve-t-il mes types ?
Non, et aucun fichier .properties ne le peut. Tout est du texte : `true`, `42` et `null` reviennent en chaînes `"true"`, `"42"` et `""`. C’est votre lecteur qui décide de leur sens. C’est le format qui veut cela, pas une limite de cette conversion.

Convertisseurs associés