解析.dms文件中存在的深层嵌套JSON数据

时间:2019-06-14 21:04:24

标签: python json api

我正在尝试解析一个深度嵌套的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文件中,以供我进行进一步的分析和机器学习建模。

1 个答案:

答案 0 :(得分:0)

如果每个对象都包含在一行中,则一次读取一行并分别解码每行:

with open(fileName, 'r') as file_to_read:
    for line in filetoread:
        json_line = json.loads(line)

如果对象分布在多行上,则理想情况下应尝试修复数据源,否则请使用我的库jsonfinderHere是一个可能有用的示例答案。