Maison > Article > développement back-end > Quelles sont les méthodes de conversion entre dictionnaires et JSON en Python ?
Quelles sont les méthodes de conversion mutuelle entre dictionnaire et JSON en Python ?
En tant que structure de données très couramment utilisée, le dictionnaire est largement utilisé en Python. JSON (JavaScript Object Notation), en tant que format d'échange de données léger, est également largement utilisé dans la transmission et le stockage de données en réseau. En Python, la conversion entre dictionnaires et JSON est une opération courante. Cet article présentera plusieurs méthodes couramment utilisées et joindra des exemples de code correspondants.
Méthode 1 : Utilisez la fonction dumps() et la fonctionloads() du module json
Le module json est un module de la bibliothèque standard Python pour le traitement des données JSON. Parmi elles, la fonction dumps() est utilisée pour convertir des objets Python en chaînes JSON, et la fonctionloads() est utilisée pour convertir des chaînes JSON en objets Python.
Voici un exemple pour convertir un dictionnaire en chaîne JSON et une chaîne JSON en dictionnaire :
import json # 将字典转换为JSON字符串 my_dict = {'name': 'Tom', 'age': 20, 'gender': 'male'} json_str = json.dumps(my_dict) print(json_str) # 输出:{"name": "Tom", "age": 20, "gender": "male"} # 将JSON字符串转换为字典 new_dict = json.loads(json_str) print(new_dict) # 输出:{'name': 'Tom', 'age': 20, 'gender': 'male'}
Méthode 2 : Utilisez la fonction dump() et la fonction load() du module json
En plus du au-dessus de la fonction dumps() et de la fonctionloads(), le module json fournit également les fonctions dump() et load(), qui sont utilisées pour écrire des objets Python directement dans des fichiers ou lire des données JSON à partir de fichiers.
Voici un exemple pour écrire un dictionnaire dans un fichier JSON et lire un dictionnaire à partir d'un fichier JSON :
import json # 将字典写入JSON文件 my_dict = {'name': 'Tom', 'age': 20, 'gender': 'male'} with open('data.json', 'w') as f: json.dump(my_dict, f) # 从JSON文件中读取字典 with open('data.json', 'r') as f: new_dict = json.load(f) print(new_dict) # 输出:{'name': 'Tom', 'age': 20, 'gender': 'male'}
Troisième méthode : utilisez une sous-classe des classes json.JSONEncoder et json.JSONDecoder dans le module json
De plus à ce qui précède En plus des méthodes de fonction, nous pouvons également implémenter la conversion entre dictionnaires et JSON en personnalisant les sous-classes des classes json.JSONEncoder et json.JSONDecoder. En héritant de ces deux classes et en remplaçant les méthodes pertinentes, nous pouvons personnaliser le comportement de conversion du dictionnaire.
Ce qui suit est un exemple de personnalisation des sous-classes des classes JSONEncoder et JSONDecoder pour convertir des dictionnaires et JSON :
import json class MyEncoder(json.JSONEncoder): def default(self, obj): if isinstance(obj, dict): return json.JSONEncoder.default(self, obj) return obj.__dict__ class MyDecoder(json.JSONDecoder): def __init__(self): json.JSONDecoder.__init__(self, object_hook=self.dict_to_object) def dict_to_object(self, d): if '__class__' in d: class_name = d.pop('__class__') module_name = d.pop('__module__') module = __import__(module_name) class_ = getattr(module, class_name) args = dict((key, value) for key, value in d.items()) instance = class_(**args) else: instance = d return instance # 将字典转换为JSON字符串 my_dict = {'name': 'Tom', 'age': 20, 'gender': 'male'} json_str = json.dumps(my_dict, cls=MyEncoder) print(json_str) # 输出:{"name": "Tom", "age": 20, "gender": "male"} # 将JSON字符串转换为字典 new_dict = json.loads(json_str, cls=MyDecoder) print(new_dict) # 输出:{'name': 'Tom', 'age': 20, 'gender': 'male'}
Vous trouverez ci-dessus plusieurs méthodes couramment utilisées pour convertir des dictionnaires Python et JSON. En fonction des besoins réels, choisissez la méthode appropriée à utiliser, qui permet de gérer facilement la conversion des données entre le dictionnaire et JSON.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!