1. ホーム
  2. json

[解決済み] JSONDecodeError: 期待される値:行1列1

2022-02-16 06:52:47

質問

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

解決方法は?

から受け取った出力を見てみると print() とトレースバックを見ると、返ってきた値は文字列ではなく、バイトオブジェクト (接頭辞は b ):

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

などのツールを使ってURLを取得した場合、そのURLは curl -v であることがわかります。

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

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

最後の行を次のように変更します。

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