我有一个要解析的JSON输入。示例如下所示:
{"source":123456,"target":1211251,"distance":1.2115,"type":1}
{"source":223456,"target":1214251,"distance":1.1115,"type":1}
使用以下代码抛出错误:
import json
with open('Data/test.json') as data_file:
data = json.load(data_file)
错误
raise ValueError(errmsg("Extra data", s, end, len(s)))
ValueError: Extra data: line 2 column 1 - line 2 column 62 (char 62 - 123)
如果只给出1行样本,代码会设法解析,如果在JSON输入中给出超过1行,则抛出错误。
我使用JSONLint检查,并指出以下错误
Error: Parse error on line 6:
....2115, "type": 1} { "source": 223456,
---------------------^
Expecting 'EOF', '}', ',', ']', got '{'
有人能给我一个提示来解决这个错误吗?
答案 0 :(得分:1)
你的文件是很多json,而不是一个json,所以你可以为每一行解析它们。
示例代码:
import json
with open('Data/test.json') as data_file:
for line in data_file:
data = json.loads(line)
print(data)
答案 1 :(得分:1)
JSON字符串可能只包含一个,比方说,“第一级”对象。该对象本身可能包含某些内容,如果它是一个字典或列表。但是你要解析的不是有效的JSON。也许你想把你的两个词组放在一个列表中
[
{"source":123456,"target":1211251,"distance":1.2115,"type":1},
{"source":223456,"target":1214251,"distance":1.1115,"type":1}
]
答案 2 :(得分:0)
如果您的来源输入是
{"source":123456,"target":1211251,"distance":1.2115,"type":1}
{"source":223456,"target":1214251,"distance":1.1115,"type":1}
那么这是无效的JSON。你根本不能让两个对象不属于数组或其他字典。因此,您的源数据需要首先修复代码而不是代码。