私はちょうどサイドプロジェクトに取り組んでおり、json
モジュールがテキストファイルに格納されたjsonオブジェクトを解析するのに問題があります。テキストファイルには改行で区切られたjsonオブジェクトのリストが含まれています。これまでPython json.loadsがjsonの文字列を解析できません
、私はその後json.loads()
にそれを送り、私は各フルJSONラインを取得している確認してきた、このコードを持っている:私はこれを実行すると
def load_save_game(file_name):
save_game = []
with open(file_name) as f:
for line in f.readline():
save_game.append(json.loads(line))
return save_game
が、私はかなり長いトレースバックを得る:
Traceback (most recent call last):
File ____, line 70, in <module>
main()
File ____, line 66, in main
view = ViewerWindow(load_save_game('played/20_05_2016 16-04-31.txt'))
File ____, line 60, in load_save_game
save_game.append(json.loads(line))
File "C:\Python27\lib\json\__init__.py", line 338, in loads
return _default_decoder.decode(s)
File "C:\Python27\lib\json\decoder.py", line 366, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "C:\Python27\lib\json\decoder.py", line 382, in raw_decode
obj, end = self.scan_once(s, idx)
ValueError: Expecting object: line 1 column 1 (char 0)
私は問題はエンコーディングに関係することができると思われるが、問題を検討して時、私はJSONライブラリではなく、そのような真理値の総額として、物事、ぶら下がりコンマおよび単一引用符についてうるさいことができることを見てきました二重引用符よりも。
Python 2.7はjsonのRFC 7159 and ECMA 404仕様を使用しているようですので、無料のjson validatorを使用してjsonがひどく形成されているかどうかを確認しました。それはjsonのすべての標準に対して首尾よく検証されたので、pythonは入力にかなり満足しているはずです。
私は唯一の違いは、私はまた、アップロードしたthe fileでスペースなしがあるということで、json on pastebinの1行を開催しました。
私は解決策をオンラインで探し、真理値を大文字にしたり、すべての一重引用符を置き換えたり、ASCIIからテキストを解読するなど、いくつかの方法を試しました。
for line in f.readline():
f.readline()
戻り1つの文字列、ファイルの最初の行:
'json.loads()'関数は、**任意の**有効な** JSON *を受け入れます。はい、有効なJSONではないため、 'True'は受け入れられません。Python *の構文です。しかし、それはあなたの問題ではありません。オンラインのJSONバリデーターは、それが有効なJSONであることを通知します。 –