Was dieses Werkzeug tut
Aus einer .properties-Datei wird YAML, wobei die Punkte zu Struktur werden.
# Dienst
app.name=Demo
app.port=8080
app.debug=true
app:
name: Demo
port: 8080
debug: true
= und : trennen beide einen Schlüssel von seinem Wert, Kommentarzeilen beginnen mit # oder !, und eine Zeile, die auf einen Rückstrich endet, geht in der nächsten weiter. Die Escapes einer .properties-Datei — \:, \=, \n, \uXXXX — werden aufgelöst, caf\u00e9 kommt also als café an.
Indizierte Schlüssel werden Listen
app.hosts[0]=alpha
app.hosts[1]=beta
app:
hosts:
- alpha
- beta
So schreibt Spring eine Liste in eine Datei, die keine Listen kennt, und so schreibt sie auch der YAML-nach-Properties-Umwandler dieser Seite. Beim Lesen bekamen Sie jedoch zwei wörtliche Schlüssel namens hosts[0] und hosts[1]: das Werkzeug erkannte seine eigene Ausgabe nicht, und der Hin- und Rückweg verlor die Sequenz. Indizes werden jetzt zur Sequenz, wenn sie bei 0 beginnen und keine Lücke lassen. Eine Lücke, eine Wiederholung oder ein einfaches hosts daneben lassen die Schlüssel genau so, wie sie waren — einen Wert zu verschieben, um ein Loch zu füllen, hieße eine Reihenfolge zu erfinden.
Ein wiederholter Schlüssel wird abgelehnt
app.port=8080
app.port=3000
Duplicate key "app.port": it already has a different value
Properties.load behält die letzte Zuweisung ohne ein Wort, der erste Wert verschwand also. Die Richtung YAML nach Properties weigerte sich bereits, zwei Schlüssel zu schreiben, die auf denselben Namen zusammenfallen; sie hier still anzunehmen war dasselbe Loch von der anderen Seite. Zwei gleiche Zeilen gehen weiter durch, denn sich zu wiederholen gesteht nichts.
Was aus den Werten wird
- Zahlen und Wahrheitswerte werden typisiert, wie in den CSV-Werkzeugen:
8080ist eine Zahl,trueein Wahrheitswert. 007bleibt eine Zeichenkette.1e3auch, und alles andere, dessen Text mehr trägt als sein Wert.- Mehrdeutige Skalare werden zitiert.
y,onundNOsind für einen YAML-1.2-Leser Zeichenketten und für PyYAML, das YAML 1.1 liest, Wahrheitswerte. Genau diese zu zitieren hält beide Leser einig. - Ein leerer Wert ist eine leere Zeichenkette, kein Null: die Datei sagt, der Schlüssel sei da und nichts darin, und das sagt das YAML auch.
Datenschutz ab Werk
Alles läuft lokal in deinem Browser mit JavaScript. Deine Daten werden nie hochgeladen, wodurch das Tool auch für sensible Inhalte sicher ist und offline funktioniert.