读取python中的json文件

2024-04-26 13:03:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试读取一个文件,该文件的内容如下:

{"op":"mcm","clk":"6394474220","pt":1523095339090,"mc":[{"id":"1.141299528","rc":[{"atb":[[10,5.56]],"id":30246}],"con":true,"img":false}]}
{"op":"mcm","clk":"6394627886","pt":1523096762118,"mc":[{"id":"1.141299528","rc":[{"atb":[[10.5,20.78]],"id":30246}],"con":true,"img":false}]}
{"op":"mcm","clk":"6394647672","pt":1523096790720,"mc":[{"id":"1.141299528","rc":[{"atb":[[10,22.23]],"id":30246}],"con":true,"img":false}]}

我试着把它读作json,但似乎在一个文件中有多个json。 当我尝试使用以下命令读取此json文件时:

connection_file = open(filepath, 'r')
conn_string = json.load(connection_file)

它给出了一个错误:

json.decoder.JSONDecodeError: Extra data: line 2 column 1

请告诉我如何阅读这些文件。你知道吗


Tags: 文件ptidjsonfalsetrueimgconnection
2条回答

您的文件不是有效的json文件。每一行都是一个json,但它们由新行分隔。您可以使用此选项将它们全部列为一个列表:

with open(filepath) as f:
    jsons = list(map(json.loads, f))
# jsons is now a list of all jsons in your file.

看起来这个文件不是一个正确的json文件,但每行都包含json数据。所以逐行读取文件并将其转换为json

>>> import json
>>> with open('tmp.txt') as f:
...     json_list = [json.loads(line) for line in f]
... 
>>> json_list
[{'op': 'mcm', 'clk': '6394474220', 'pt': 1523095339090, 'mc': [{'id': '1.141299528', 'rc': [{'atb': [[10, 5.56]], 'id': 30246}], 'con': True, 'img': False}]}, {'op': 'mcm', 'clk': '6394627886', 'pt': 1523096762118, 'mc': [{'id': '1.141299528', 'rc': [{'atb': [[10.5, 20.78]], 'id': 30246}], 'con': True, 'img': False}]}, {'op': 'mcm', 'clk': '6394647672', 'pt': 1523096790720, 'mc': [{'id': '1.141299528', 'rc': [{'atb': [[10, 22.23]], 'id': 30246}], 'con': True, 'img': False}]}]

相关问题 更多 >