Json est une structure d'échange de données couramment utilisée. En raison de ses caractéristiques légères et faciles à lire et à écrire, elle est largement utilisée sur Internet. L'article suivant présente principalement les informations pertinentes sur l'analyse Json par Python. Les amis dans le besoin peuvent s'y référer.
Introduction à Json
JSON (JavaScript Object Notation) est un format d'échange de données léger. Il est basé sur un sous-ensemble de JavaScript (Standard ECMA-262 3e édition – décembre 1999). JSON utilise un format de texte totalement indépendant du langage, mais utilise également des conventions similaires à la famille des langages C (notamment C, C++, C#, Java, JavaScript, Perl, Python, etc.). Ces propriétés font de JSON un langage d'échange de données idéal. Facile à lire et à écrire pour les humains, et facile à analyser et à générer pour les machines.
Son format est généralement le suivant :
Un objet est une collection non ordonnée de « paires nom/valeur ». Un objet commence par "{" (crochet gauche) et se termine par "}" (crochet droit). Chaque "nom" est suivi d'un ":" (deux-points) ; les paires "nom/valeur" sont séparées par un "," (virgule).
Par exemple :
{"b": "Hello", "c": null, "a": true}
Sa valeur peut être entre guillemets doubles. chaîne, nombre, vrai, faux, nul, objet ou tableau. Ces structures peuvent être imbriquées.
La valeur (valeur) peut être une chaîne entourée de guillemets doubles (chaîne), une valeur numérique (nombre), vrai, faux, nul, un objet (objet ) Ou un tableau. Ces structures peuvent être imbriquées.
Utilisez Python pour encoder et analyser Json
Python dispose d'un package json intégré pour nous aider à effectuer les opérations json.
Pour exporter la structure du dictionnaire Python vers json, utilisez json.dumps()
Pour lire json dans la structure du dictionnaire Python, utilisez json.loads()
.
S'il ne s'agit pas d'une opération de chaîne mais d'une opération de fichier, utilisez respectivement la fonction json.load()
et la fonction json.dump()
.
import json data = { 'name' : 'ACME', 'shares' : 100, 'price' : 542.23 } json_str = json.dumps(data) data = json.loads(json_str) # Writing JSON data to file with open('data.json', 'w') as f: json.dump(data, f) # Reading data back with open('data.json', 'r') as f: data = json.load(f)
Les types par défaut correspondent aux éléments suivants :
JSON | Python |
---|---|
object | dict |
array | list |
string | unicode |
number (int) | int, long |
number (real) | float |
true | True |
false | False |
null | None |
Encodage et décodage entre d'autres types de données et Json
De manière générale, l'analyse de json par Python est une opération entre list ou dict , si vous besoin de convertir entre d'autres types et json, vous avez besoin du paramètre object_hook. Définissez d’abord une classe et initialisez le dictionnaire de classe en paires clé-valeur json. De cette façon, les paramètres de json deviennent des attributs de la classe.
Convertir un dictionnaire JSON en un objet Python Python
>>> class JSONObject: ... def __init__(self, d): ... self.__dict__ = d ... >>> >>> data = json.loads(s, object_hook=JSONObject) >>> data.name 'ACME' >>> data.shares 50 >>> data.price 490.1
peut également être spécifié par "Fonction" pour effectuer la conversion.
Utilisez une fonction pour spécifier la méthode de sérialisation, c'est-à-dire transformer la paire "attribut-valeur" de l'objet en une paire de dictionnaire. La fonction renvoie un dictionnaire, puis json.dumps
formatera le dictionnaire. .
Si json est transformé en objet via une fonction, obtenez d'abord le nom de la classe, puis créez un objet via __new__
(sans appeler la fonction d'initialisation), puis attribuez chaque attribut du dictionnaire json au objet.
Utiliser la fonction pour spécifier la méthode de conversion json Python
def serialize_instance(obj): d = { '__classname__' : type(obj).__name__ } d.update(vars(obj)) return d # Dictionary mapping names to known classes classes = { 'Point' : Point } def unserialize_object(d): clsname = d.pop('__classname__', None) if clsname: cls = classes[clsname] obj = cls.__new__(cls) # Make instance without calling __init__ for key, value in d.items(): setattr(obj, key, value) return obj else: return d
utiliser La méthode est la suivante :
>>> p = Point(2,3) >>> s = json.dumps(p, default=serialize_instance) >>> s '{"__classname__": "Point", "y": 3, "x": 2}' >>> a = json.loads(s, object_hook=unserialize_object) >>> a <__main__.Point object at 0x1017577d0> >>> a.x 2 >>> a.y 3
Recommandations associées :
Python analyse de JSON Explication détaillée
Exemples de la méthode Python de jugement des chaînes Json
Compréhension approfondie du résumé des opérations JSON de Python
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!