2016-01-03 12 views
8

このエラーが表示されます。私はPython 3.5.1を使用しています。あなたがあなたのトレースバックにもprint()から受信し、出力を見れば、あなたはあなたが戻って取得値が表示されますJSONDecodeError:期待値:1行目1

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

答えて

15

:ここ

json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

は私のコードです文字列ではなく、バイトオブジェクト(接頭辞 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")) 
+0

私はjson.loads(js.decode( "utf-8"))を行っていますが、エラーを出します。AttributeError: 'str'オブジェクトに 'decode'属性がありません –

+0

@ AnwarHussainその後、JSONデータ( 'js'内)はすでに文字列(' str')であり、デコード機能を持たないで 'json.loads()'に直接渡すことができます。 ) '。 –

0

、のようないくつかの文字 "" '{} [] "多分壊れJSON形式なので、トライjson.loadsを使用(str)以外あなたの入力を確認する

関連する問題