Ce n'est pas pratique que je ne puisse pas écrire de commentaires avec JSON, j'ai donc essayé YAML / TOML. Ini qui utilise configparser est hors de portée cette fois.
Si vous n'êtes pas familier avec le format de définition, il est plus facile de comprendre comment convertir le fichier de définition que vous utilisez normalement dans un autre format via un dictionnaire plutôt que d'écrire la définition en YAML / TOML depuis le début. Puisqu'il est accessible via un dictionnaire à l'intérieur du programme, je ne pense pas qu'il soit nécessaire de modifier le traitement lui-même. Cette fois, je voudrais tester sur la base des données suivantes.
dat.json[données de test]
{
"country": "Japan",
"user": [
{
"name": "Taro",
"phone": ["111-222-3333", "222-333-4444"],
"age": 10
},
{
"name": "Hanako",
"phone": ["555-666-777"],
"age": 20
}
]
}
En plus de json, utilisez les bibliothèques yaml et toml.
JSON→YAML Utilisez la bibliothèque yaml pour convertir de JSON en YAML.
json2yaml.py
import yaml
import json
with open('dat.json') as file:
#Dictionnaire de JSON
obj = json.load(file)
#YAML du dictionnaire
ym = yaml.dump(obj, Dumper=yaml.CDumper)
print(ym)
Résultat d'exécution
country: Japan
user:
- age: 10
name: Taro
phone:
- 111-222-3333
- 222-333-4444
- age: 20
name: Hanako
phone:
- 555-666-777
YAML→JSON Il semble préférable d'utiliser safe_load pour charger le fichier YAML. La méthode de référence est la même que JSON, vous pouvez donc l'utiliser sans aucune gêne. (Le résultat du traitement sera le même qu'avant la conversion, il est donc omis.)
yaml2json.py
with open('dat.yaml') as file:
#Dictionnaire de YAML
obj = yaml.safe_load(file)
#JSON du dictionnaire
js = json.dumps(obj, indent=2)
print(js)
JSON→TOML Utilisez la bibliothèque toml pour convertir de JSON en TOML. L'utilisation est la même que YAML et JSON. De plus, il semble que pytoml ne soit pas maintenu.
json2toml.py
import toml
import json
with open('dat.json') as file:
#Dictionnaire de JSON
obj = json.load(file)
#TOML du dictionnaire
tm = toml.dumps(obj)
print(tm)
Résultat d'exécution
country = "Japan"
[[user]]
name = "Taro"
phone = [ "111-222-3333", "222-333-4444",]
age = 10
[[user]]
name = "Hanako"
phone = [ "555-666-777",]
age = 20
Je suis un peu inquiet pour la dernière virgule de l'élément de téléphone w
TOML→JSON La lecture de TOML est similaire à JSON / YAML.
toml2json.py
with open('dat.toml') as file:
#Dictionnaire de TOML
obj = toml.load(file)
#JSON du dictionnaire
js = json.dumps(obj, indent=2)
print(js)
YAML / TOML ont tous deux des avantages et des inconvénients, mais ceux qui sont habitués à JSON ont estimé que TOML est plus facile à lire.
Je voudrais implémenter TomlEncoder de toml.dumps indépendamment pour prendre en charge ce qui suit.
Recommended Posts