1

我有以下名为 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)

关于是什么导致此错误的任何想法?

我用谷歌搜索了错误消息,这个网站上有类似的帖子,有类似的错误,但这个问题是独一无二的,原因有两个:1.这些是由使用无效的 JSON 代码引起的,我的是有效的,2.它是略有不同的错误消息。我还检查了 python 文档,没有发现任何见解。

4

2 回答 2

3

如果文件是你指定的,你不要逐行加载它,你必须加载整个文件。

于 2013-11-07T21:06:41.957 回答
2

您有一个大型 JSON 对象。将其解析为json.load()

import json

with open('D:/Users/Vik/Downloads/exampleData.json') as data_file:
    data = json.load(data_file)

您的代码尝试将每一行视为 JSON 值;这不起作用,因为[(第一行)不是完整的 JSON 值,也不会组合接下来的几行。

于 2013-11-07T21:06:51.417 回答