j'ai un fichier JSON nommé "panamaleaks50k.json". Je veux obtenir le champ ['text'] du fichier json mais il me montre l'erreur suivante
l'objet JSON doit être str, octets ou bytearray, et non 'TextIOWrapper'
c'est mon code
with open('C:/Users/bilal butt/Desktop/PanamalEakJson.json','r') as lst:
b = json.loads(lst)
print(b['text'])
mon fichier json regarde
[
{
"fullname": "Mohammad Fayyaz",
"id": "885800668862263296",
"likes": "0",
"replies": "0",
"retweets": "0",
"text": "Love of NS has been shown in PanamaLeaks scandal verified by JIT...",
"timestamp": "2017-07-14T09:58:31",
"url": "/mohammadfayyaz/status/885800668862263296",
"user": "mohammadfayyaz"
},
{
"fullname": "TeamPakistanPTI \u00ae",
"id": "885800910357749761",
"likes": "0",
"replies": "0",
"retweets": "0",
"text": "RT ArsalanISF: #PanamaLeaks is just a start. U won't believe whr...",
"timestamp": "2017-07-14T09:59:29",
"url": "/PtiTeampakistan/status/885800910357749761",
"user": "PtiTeampakistan"
}
]
comment puis-je lire tous les champs ['texte'] et un seul champ ['texte']?
Vous devez passer le fichier contenu (c'est-à-dire une chaîne) à json.loads()
, et non à l'objet fichier lui-même. Essaye ça:
with open(file_path) as f:
data = json.loads(f.read())
print(data[0]['text'])
Il y a aussi la fonction json.load()
qui accepte un objet fichier et fait la partie f.read()
sous le capot.
Utilisez json.load()
, pas json.loads()
, si votre entrée est un objet de type fichier (tel qu'un TextIOWrapper).
Étant donné le reproducteur complet suivant:
import json, tempfile
with tempfile.NamedTemporaryFile() as f:
f.write(b'{"text": "success"}'); f.flush()
with open(f.name,'r') as lst:
b = json.load(lst)
print(b['text'])
... le résultat est success
.