使用Python 3读取JSON文件

时间:2022-09-15 11:39:48

I'm using Python 3.5.2 on Windows 10 x64. The JSON file I'm reading is this which is a JSON array containing 2 more arrays.

我在Windows 10 x64上使用Python 3.5.2。我正在阅读的JSON文件是一个包含2个以上数组的JSON数组。

I'm trying to parse this JSON file using the json module. As described in the docs the JSON file must be compliant to RFC 7159. I checked my file here and it tells me it's perfectly fine with the RFC 7159 format, but when trying to read it using this simple python code:

我正在尝试使用json模块解析此JSON文件。正如文档中所描述的那样,JSON文件必须符合RFC 7159.我在这里检查了我的文件,它告诉我它与RFC 7159格式完全没问题,但是在尝试使用这个简单的python代码读取它时:

with open(absolute_json_file_path, encoding='utf-8-sig') as json_file:
    text = json_file.read()
    json_data = json.load(json_file)
    print(json_data)

I'm getting this exception:

我得到了这个例外:

Traceback (most recent call last):
  File "C:\Program Files (x86)\JetBrains\PyCharm 4.0.5\helpers\pydev\pydevd.py", line 2217, in <module>
    globals = debugger.run(setup['file'], None, None)
  File "C:\Program Files (x86)\JetBrains\PyCharm 4.0.5\helpers\pydev\pydevd.py", line 1643, in run
    pydev_imports.execfile(file, globals, locals)  # execute the script
  File "C:\Program Files (x86)\JetBrains\PyCharm 4.0.5\helpers\pydev\_pydev_imps\_pydev_execfile.py", line 18, in execfile
    exec(compile(contents+"\n", file, 'exec'), glob, loc) 
  File "C:/Users/Andres Torti/Git-Repos/MCF/Sur3D.App/shapes-json-checker.py", line 14, in <module>
    json_data = json.load(json_file)
  File "C:\Users\Andres Torti\AppData\Local\Programs\Python\Python35-32\lib\json\__init__.py", line 268, in load
    parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, **kw)
  File "C:\Users\Andres Torti\AppData\Local\Programs\Python\Python35-32\lib\json\__init__.py", line 319, in loads
    return _default_decoder.decode(s)
  File "C:\Users\Andres Torti\AppData\Local\Programs\Python\Python35-32\lib\json\decoder.py", line 339, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "C:\Users\Andres Torti\AppData\Local\Programs\Python\Python35-32\lib\json\decoder.py", line 357, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

I can read this exact file perfectly fine on Javascript but I can't get Python to parse it. Is there anything wrong with my file or is any problem with the Python parser?

我可以在Javascript上完全正确地读取这个确切的文件,但我无法让Python解析它。我的文件有什么问题或者Python解析器有什么问题吗?

2 个解决方案

#1


6  

Based on reading over the documentation again, it appears you need to either change the third line to

基于再次阅读文档,您似乎需要将第三行更改为

json_data = json.loads(text)

or remove the line

或删除该行

text = json_file.read()

since read() causes the file's index to reach the end of the file. (I suppose, alternatively, you can reset the index of the file).

因为read()导致文件的索引到达文件的末尾。 (我想,或者,您可以重置文件的索引)。

#2


17  

Try this

import json

with open('filename.txt', 'r') as f:
    array = json.load(f)

print (array)

#1


6  

Based on reading over the documentation again, it appears you need to either change the third line to

基于再次阅读文档,您似乎需要将第三行更改为

json_data = json.loads(text)

or remove the line

或删除该行

text = json_file.read()

since read() causes the file's index to reach the end of the file. (I suppose, alternatively, you can reset the index of the file).

因为read()导致文件的索引到达文件的末尾。 (我想,或者,您可以重置文件的索引)。

#2


17  

Try this

import json

with open('filename.txt', 'r') as f:
    array = json.load(f)

print (array)