如何在python中解析无效的json文件

2024-06-16 13:08:32 发布

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

因此,我要解析的json文件如下所示:

{
   "container_header_255_2013-12-31 16:00:45": {
  "fw_package_version": "255.255.255X255", 
  "start_timestamp": 1388534445, 
  "start_timestr": "2013-12-31 16:00:45", 
  "end_timestamp": 4294967295, 
  "end_timestr": "2106-02-06 22:28:15", 
  "length": 65535, 
  "product": "UNKNOWN", 
  "hw_version": "UNKNOWN"
   },
   "log_packet_debug_1388534445_2013-12-31 16:00:45": {
  "timestamp": 1388534445, 
  "timestr": "2013-12-31 16:00:45", 
  "log_level": "DBG", 
  "log_id": "0xC051", 
  "log_string": "DBG_STORAGE_LOG", 
  "file_name_line": "storage_data.c733", 
  "message": "Mark as Erasable: 231 238"
  },

抱歉,压痕可能有点偏了。但不管怎样,我在网上看到的所有例子都包括列表,由于某种原因,这个例子只包含字典


Tags: 文件logjsonpackageversioncontainerstarttimestamp
1条回答
网友
1楼 · 发布于 2024-06-16 13:08:32

您可以为此使用^{}模块(免责声明:我编写的)。它有一个参数startdepth,专门用来解析尚未终止或“无限”(例如日志文件)的XML/JSON流。在

from splitstream import splitfile
from StringIO import StringIO
import json

jsonfile = StringIO(""".....""") # your neverending JSON-sorta logfile
# Probably, you want something like this instead
#jsonfile = file("/var/log/my/log.json", "r")

# startdepth is the magic argument here: it starts splitting at depth = 1
for s in splitfile(jsonfile, format="json", startdepth=1):
  print "JSON",json.loads(s)

它给出了:

^{pr2}$

相关问题 更多 >