我正在尝试解析一个深度嵌套的json数据,该数据另存为.dms文件。我将文件的某些事务保存为.json文件。当我尝试json.load()函数读取.json文件时。我收到错误信息
JSONDecodeError: Extra data: line 2 column 1 (char 4392)
在文本编辑器中打开.dms文件,我从中复制了3个事务并将其保存为.json文件。文件中的事务不以逗号分隔。它由新行分隔。当我使用它的1个事务作为.json文件并使用json.load()函数时,它成功读取。但是当我尝试使用3个事务处理json文件时,显示错误。
import json
d = json.load(open('t3.json')) or
with open('t3.json') as f:
data = json.load(f)
print(data)
示例交易为:
{
"header":{
"msgType":"SOURCE_EVENT",
},
"content":{
"txntype":"ums",
"ISSUE":{
"REQUEST":{
"messageTime":"2019-06-06 21:54:11.492",
"Code":"655400",
},
"RESPONSE":{
"Time":"2019-06-06 21:54:11.579",
}
},
"DATA":{
"UserId":"021",
},
{header:{.....}}}
{header:{......}}}
这是我来自API的json数据的样子。我以可读的方式编写了它。但是所有这些都是连续写的,并且每当头启动时,它都从新行开始。 .dms文件具有3500个事务。这两笔交易甚至都没有用逗号分隔。用新行隔开。但是在交易中,值中有多余的空格。例如“ company”:“ Target Chips 123 CA”
我需要的输出: 我需要通过从每个事务的数据中提取键messageType,messageTime,userid的值来制作一个csv。
请帮忙清除错误,并为每笔交易建议从这些交易中提取所需数据的方法,并放入.csv文件中,以供我进行进一步的分析和机器学习建模。
答案 0 :(得分:0)
如果每个对象都包含在一行中,则一次读取一行并分别解码每行:
with open(fileName, 'r') as file_to_read:
for line in filetoread:
json_line = json.loads(line)
如果对象分布在多行上,则理想情况下应尝试修复数据源,否则请使用我的库jsonfinder。 Here是一个可能有用的示例答案。