web-dev-qa-db-fra.com

comment lire un objet json dans python

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']?

9
Bilal Butt

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.

21
Eugene Yarmash

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.

8
Charles Duffy