Es ist unpraktisch, dass ich mit JSON keine Kommentare schreiben kann, deshalb habe ich YAML / TOML ausprobiert. Ini, das configparser verwendet, ist diesmal nicht verfügbar.
Wenn Sie mit dem Definitionsformat nicht vertraut sind, ist es einfacher zu verstehen, wie Sie die normalerweise verwendete Definitionsdatei über ein Wörterbuch in ein anderes Format konvertieren, als die Definition von Anfang an in YAML / TOML zu schreiben. Da der Zugriff über ein Wörterbuch im Programm erfolgt, halte ich es nicht für erforderlich, die Verarbeitung selbst zu ändern. Dieses Mal möchte ich anhand der folgenden Daten testen.
dat.json[Testdaten]
{
"country": "Japan",
"user": [
{
"name": "Taro",
"phone": ["111-222-3333", "222-333-4444"],
"age": 10
},
{
"name": "Hanako",
"phone": ["555-666-777"],
"age": 20
}
]
}
Verwenden Sie zusätzlich zu json yaml- und toml-Bibliotheken.
JSON→YAML Verwenden Sie die yaml-Bibliothek, um von JSON nach YAML zu konvertieren.
json2yaml.py
import yaml
import json
with open('dat.json') as file:
#Wörterbuch von JSON
obj = json.load(file)
#YAML aus dem Wörterbuch
ym = yaml.dump(obj, Dumper=yaml.CDumper)
print(ym)
Ausführungsergebnis
country: Japan
user:
- age: 10
name: Taro
phone:
- 111-222-3333
- 222-333-4444
- age: 20
name: Hanako
phone:
- 555-666-777
YAML→JSON Es scheint besser, safe_load zum Laden der YAML-Datei zu verwenden. Die Referenzmethode ist die gleiche wie bei JSON, sodass Sie sie problemlos verwenden können. (Das Verarbeitungsergebnis ist das gleiche wie vor der Konvertierung, daher wird es weggelassen.)
yaml2json.py
with open('dat.yaml') as file:
#Wörterbuch von YAML
obj = yaml.safe_load(file)
#JSON aus dem Wörterbuch
js = json.dumps(obj, indent=2)
print(js)
JSON→TOML Verwenden Sie die Toml-Bibliothek, um von JSON nach TOML zu konvertieren. Die Verwendung entspricht der von YAML und JSON. Darüber hinaus scheint Pytoml nicht erhalten zu sein.
json2toml.py
import toml
import json
with open('dat.json') as file:
#Wörterbuch von JSON
obj = json.load(file)
#TOML aus dem Wörterbuch
tm = toml.dumps(obj)
print(tm)
Ausführungsergebnis
country = "Japan"
[[user]]
name = "Taro"
phone = [ "111-222-3333", "222-333-4444",]
age = 10
[[user]]
name = "Hanako"
phone = [ "555-666-777",]
age = 20
Ich mache mir ein wenig Sorgen um das letzte Komma des Telefonartikels w
TOML→JSON Das Lesen von TOML ähnelt JSON / YAML.
toml2json.py
with open('dat.toml') as file:
#Wörterbuch von TOML
obj = toml.load(file)
#JSON aus dem Wörterbuch
js = json.dumps(obj, indent=2)
print(js)
Beide YAML / TOML haben Vor- und Nachteile, aber diejenigen, die an JSON gewöhnt sind, waren der Meinung, dass TOML leichter zu lesen ist.
Ich möchte TomlEncoder von toml.dumps unabhängig implementieren, um Folgendes zu unterstützen.
Recommended Posts