我有以下名为exampleData.json的Python文件:
[
{
"startTime" : 1383790636.261329,
"confidence" : 2,
"type" : 3,
"startTime2" : "2013-11-06 21:17:16.261",
"duration" : 4.287207
},
{
"startTime" : 1383790640.548536,
"confidence" : 2,
"type" : 3,
"startTime2" : "2013-11-06 21:17:20.549",
"duration" : 3.674701
},
{
"startTime" : 1383790644.223238,
"confidence" : 2,
"type" : 3,
"startTime2" : "2013-11-06 21:17:24.223",
"duration" : 7.35066
}
]
(实际文件大约有1000个块,我刚刚粘贴了3个)。我已经使用jsonlint.com验证了整个JSON文件,它是有效的JSON。
我正在尝试运行以下名为jsonGraph.py的程序将代码输入到python中:
import json
import pprint
data = []
with open('D:/Users/Vik/Downloads/exampleData.json') as data_file:
for line in data_file:
data.append(json.loads(line))
问题是,当我尝试运行程序时,我收到以下错误:
D:\Users\Name>py D:\Users\Name\Downloads\jsonGraph.py
Traceback (most recent call last):
File "D:\Users\Name\Downloads\jsonGraph.py", line 7, in <module>
data.append(json.loads(line))
File "D:\Python33\lib\json\__init__.py", line 319, in loads
return _default_decoder.decode(s)
File "D:\Python33\lib\json\decoder.py", line 352, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "D:\Python33\lib\json\decoder.py", line 368, in raw_decode
obj, end = self.scan_once(s, idx)
ValueError: Expecting object: line 1 column 2 (char 1)
有关导致此错误的原因的任何想法?
我已经在Google上搜索了错误消息,此网站上也有类似的帖子,但有类似的错误,但这个问题有两个独特之处:1。这些是由于使用了无效的JSON代码引起的,我的是有效的,2这是一个略有不同的错误信息。我还检查了python文档,但没有找到任何见解。
答案 0 :(得分:3)
如果文件是您指定的,则不要逐行加载,您必须加载整个文件。
答案 1 :(得分:2)
您有一个大型JSON对象。使用json.load()
:
import json
with open('D:/Users/Vik/Downloads/exampleData.json') as data_file:
data = json.load(data_file)
您的代码尝试将每一行视为JSON值;因为[
(第一行)不是一个完整的JSON值,也不会合并接下来的几行,所以它不会起作用。