Aller juste pour ajouter un simple exemple de ce que tout le monde l'a expliqué,
json.load()
json.load
peut désérialiser un fichier lui-même c'est à dire qu'il accepte file
objet,
with open("json_data.json", "r") as content:
print(json.load(content))
seront de sortie,
{u'event': {u'id': u'5206c7e2-da67-42da-9341-6ea403c632c7', u'name': u'Sufiyan Ghori'}}
parce qu' content
est de type file
- je.e, <type 'file'>
Si j'utilise json.loads
au lieu de cela,
with open("json_data.json", "r") as content:
print(json.loads(content))
Je voudrais obtenir cette erreur:
TypeError: chaîne de caractères ou un tampon
json.charges()
json.loads()
deserailize chaîne.
à l'aide de content.read()
avec json.loads()
retour contenu du fichier,
with open("json_data.json", "r") as content:
print(json.loads(content.read()))
De sortie,
{u'event': {u'id': u'5206c7e2-da67-42da-9341-6ea403c632c7', u'name': u'Sufiyan Ghori'}}
C'est parce que le type d' content.read()
est une chaîne, c'est à dire <type 'str'>
Si j'utilise json.load()
avec content.read()
j'obtiens l'erreur,
with open("json_data.json", "r") as content:
print(json.load(content.read()))
Donne,
AttributeError: 'str' object n'a pas d'attribut "lire"
Donc, maintenant vous savez json.load
deserialze de fichiers et d' json.loads
désérialiser une chaîne de caractères.
Un autre exemple,
sys.stdin
rendement file
, donc si je n' print(json.load(sys.stdin))
, je vais obtenir réel des données json,
cat json_data.json | ./test.py
{u'event': {u'id': u'5206c7e2-da67-42da-9341-6ea403c632c7', u'name': u'Sufiyan Ghori'}}
Si je veux utiliser json.loads()
, je le ferais print(json.loads(sys.stdin.read()))
à la place.