Gegenseitige Konvertierung zwischen JSON und YAML / TOML in Python

Gegenseitige Konvertierung zwischen JSON und YAML / TOML in Python

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
    }
  ]
}

Konvertierungsmethode

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)

Zusammenfassung

Beide YAML / TOML haben Vor- und Nachteile, aber diejenigen, die an JSON gewöhnt sind, waren der Meinung, dass TOML leichter zu lesen ist.

Was ich in Zukunft machen möchte

Ich möchte TomlEncoder von toml.dumps unabhängig implementieren, um Folgendes zu unterstützen.

Recommended Posts

Gegenseitige Konvertierung zwischen JSON und YAML / TOML in Python
Unterschied zwischen == und ist in Python
Unterschied in der Authentizität zwischen Python und JavaScript
Unterschied zwischen Anweisungen (Anweisungen) und Ausdrücken (Ausdrücken) in Python
Unterschiede zwischen Python- und Java-Syntax
Unterschied zwischen @classmethod und @staticmethod in Python
Unterschied zwischen Anhängen und + = in der Python-Liste
Unterschied zwischen nicht lokal und global in Python
Lesen und schreiben Sie JSON-Dateien mit Python
Unterschiede in der Multithread-Verarbeitung zwischen Python und Jython
Unterschied zwischen Variablen und Selbst. Variablen in der [Python] -Klasse
[Python] Konvertierungsnotiz zwischen Zeitdaten und numerischen Daten
Über den Unterschied zwischen "==" und "is" in Python
Lesen und Schreiben von CSV- und JSON-Dateien mit Python
Festkomma- und Binärkonvertierung
POST JSON mit Python und empfange mit PHP
Umgang mit Json in Python
Unterschied zwischen Ruby und Python in Bezug auf Variablen
Gegenseitige Umrechnung zwischen Datum und Tag seit dem 1. Januar 2000
Hübscher Druck json oder yaml mit Farbe in Python
Unterschied zwischen return, return None und no return description in Python
Vergleiche "log and infininity" mit Gauche (0.9.4) und Python (3.5.1)
Einfaches Formatieren von JSON mit Python
Konvertierung zwischen Unixtime und Datetime
Stapel und Warteschlange in Python
Unittest und CI in Python
Python-Modul num2words Verhaltensunterschied zwischen Englisch und Russisch
Listenverkettungsmethode in Python, Unterschied zwischen list.extend () und dem Operator "+"
Unterschied zwischen Ruby und Python Split
Unterschied zwischen Java und Python (Memo)
Pakete, die MIDI mit Python Midi und Pretty_Midi verarbeiten
Zeigen Sie Fotos in Python und HTML an
Schreiben Sie ein JSON-Schema mit Python DSL
Sortieralgorithmus und Implementierung in Python
Bearbeiten Sie Dateien und Ordner in Python
Über Python und Cython dtype
Laden Sie JSON-Typen dynamisch mit Python
Umgang mit JSON-Dateien in Python
Zusammenarbeit zwischen Python-Modul und API
JSON-Codierung und -Decodierung mit Python
Unterschied zwischen Python, Stftime und Strptime
Überprüfen und verschieben Sie das Verzeichnis in Python
Unterschied zwischen der Python2-Serie und der Python3-Serie dict.keys ()
Verschlüsselung mit Python: IND-CCA2 und RSA-OAEP
Hashing von Daten in R und Python
[Python3] Speichern Sie die Mittelwert- und Kovarianzmatrix in json mit Pandas
Funktionssynthese und Anwendung in Python
Exportieren und Ausgeben von Dateien in Python
Python-Protokollierung und Dump an JSON
[Python] Unterschied zwischen Funktion und Methode
Reverse Flat Pseudonym und Katakana in Python2.7
Lesen und Schreiben von Text in Python
[GUI in Python] PyQt5-Menü und Symbolleiste-
Funktion zum Öffnen einer Datei in Python3 (Unterschied zwischen open und codecs.open und Geschwindigkeitsvergleich)
Python - Unterschied zwischen exec und eval
[Python] Unterschied zwischen randrange () und randint ()
[Python] Unterschied zwischen sortiert und sortiert (Colaboratory)
Erstellen und lesen Sie Messagepacks in Python
[Python] Zusammenfassung der Konvertierung zwischen Zeichenfolgen und numerischen Werten (ASCII-Code)