web-dev-qa-db-ja.com

pythonのjsonオブジェクトの読み方

「panamaleaks50k.json」という名前のjsonファイルがあります。 JSONファイルから['text']フィールドを取得したいのですが、次のエラーが表示されます

jSONオブジェクトは、 'TextIOWrapper'ではなく、str、bytes、またはbytearrayでなければなりません

これは私のコードです

with open('C:/Users/bilal butt/Desktop/PanamalEakJson.json','r') as lst:
    b = json.loads(lst)
    print(b['text'])

私のjsonファイルの外観

[
{
   "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"
 }
]

すべての['text']フィールドと単一の['text']フィールドを読み取る方法

9
Bilal Butt

ファイルcontents(つまり文字列)を、ファイルオブジェクト自体ではなく、json.loads()に渡す必要があります。これを試して:

_with open(file_path) as f:
    data = json.loads(f.read())
    print(data[0]['text'])
_

また、ファイルオブジェクトを受け入れ、内部でjson.load()部分を実行する f.read() 関数もあります。

21
Eugene Yarmash

入力がファイルのようなオブジェクト(TextIOWrapperなど)の場合は、json.load()ではなくjson.loads()を使用します。

次の完全な再生装置があるとします。

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

...出力はsuccessです。

8
Charles Duffy