выходной файл журнала jct, ломающий парсон json Python

Ubuntu 19.04 Python 3.7

Создайте файл JSON:

journalctl -ojson -r > a.json

Теперь прочитайте его в:

with open('a.json') as infile :
   data = json.load(infile)

Traceback (most recent call last):
  File "journalctl.json.py", line 4, in <module>
data = json.load(infile)
  File "/usr/lib/python3.7/json/__init__.py", line 296, in load
parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, **kw)
  File "/usr/lib/python3.7/json/__init__.py", line 348, in loads
return _default_decoder.decode(s)
  File "/usr/lib/python3.7/json/decoder.py", line 340, in decode
raise JSONDecodeError("Extra data", s, end)
json.decoder.JSONDecodeError: Extra data: line 2 column 1 (char 985)

А вот строка № 2

{"_HOSTNAME":"vaio","_CAP_EFFECTIVE":"3fffffffff","_SELINUX_CONTEXT":"unconfined\n","_COMM":"anacron","_SYSTEMD_UNIT":"anacron.service","MESSAGE":"Normal exit (0 jobs run)","_SOURCE_REALTIME_TIMESTAMP":"1570415470605362","SYSLOG_FACILITY":"9","_BOOT_ID":"06344b4eb91344bf8c1ce7c49f77ee5d","_UID":"0","PRIORITY":"5","__CURSOR":"s=2b70948bafe3422ca5fa14213e18cda1;i=3c78c;b=06344b4eb91344bf8c1ce7c49f77ee5d;m=83ae2587;t=59448d8467447;x=24f85cc398f54cab","_PID":"22196","SYSLOG_IDENTIFIER":"anacron","_SYSTEMD_INVOCATION_ID":"3cc36dc0214b4f98a311fc110648019e","__MONOTONIC_TIMESTAMP":"2209228167","_CMDLINE":"/usr/sbin/anacron -d -q -s","_SYSTEMD_CGROUP":"/system.slice/anacron.service","_MACHINE_ID":"dc7bf55ee6014b7db63fba929237b2c9","_TRANSPORT":"syslog","_GID":"0","SYSLOG_TIMESTAMP":"Oct  6 19:31:10 ","__REALTIME_TIMESTAMP":"1570415470605383","_EXE":"/usr/sbin/anacron","SYSLOG_PID":"22196","_SYSTEMD_SLICE":"system.slice"}
1
задан 7 October 2019 в 06:07

2 ответа

вы получили ошибку. json.decoder.JSONDecodeError: Ошибка дополнительных данных . Причина в том, что метод загрузки может обрабатывать только один объект JSON. И кажется, что ваш файл содержит более одного объекта JSON. Используйте следующий код, чтобы проанализировать файл JSON с несколькими объектами

jsonData = []
with open('a.json') as f:
    jsonData = [json.loads(line) for line in f]
print(jsonData)
1
ответ дан 2 March 2020 в 14:56
import json

    lines = []
    with open('C:\\Users\\Owner\\Desktop\\jsondata.txt','r') as file:
        for line in file:
            lines.append(json.loads(line))
        print(lines)
0
ответ дан 7 December 2019 в 18:33

Другие вопросы по тегам:

Похожие вопросы: