web-dev-qa-db-ja.com

JSONDecodeError:期待値:行1列1

Python 3.5.1。

json.decoder.JSONDecodeError:期待値:行1列1(char 0)

ここに私のコードがあります:

import json
import urllib.request

connection = urllib.request.urlopen('http://python-data.dr-chuck.net/comments_220996.json')

js = connection.read()

print(js)

info = json.loads(str(js))

image

16
beeny

print()から受け取る出力とTracebackを見ると、返される値は文字列ではなく、バイトオブジェクト(bで始まる)であることがわかります。 :

b'{\n  "note":"This file    .....

curl -vなどのツールを使用してURLを取得すると、コンテンツタイプが

Content-Type: application/json; charset=utf-8

したがって、UTF-8でエンコードされたJSONであり、Pythonは単純な文字列ではなくバイトストリームと見なしています。これを解析するには、まず文字列に変換する必要があります。

コードの最終行を次のように変更します。

info = json.loads(js.decode("utf-8"))
21
Dan Lowe

私の場合、 "、:" '{} [] "のようないくつかの文字がJSON形式を破壊する可能性があるため、 json.loads(str)を試してください 入力を確認するには

1
Andy Yuan