Как силами python извлечь данные из json ответа с сервиса API системы ZONT?

aiv

Новичок
Пользователь
Июл 24, 2020
1
0
1
Доброго время суток !
Подскажите, пожалуйста, как извлечь данные из файла json?
У меня есть файл test.json, с примерным содержанием:
Код:
{
  "ok": true,
  "events": [
    [
      "GuardOn-1486253766",  // id
      1486253766,            // время
      "GuardOn",             // тип
      43.871066,             // долгота
      56.166916,             // широта
      null,                  // продолжительность
      {                      // данные
          "reason": "fob",   //   причина постановки на охрану
          "fob_number": 1    //   номер брелока
      },
      false                  // тревожное?
    ],

    ...
  ]
}
Как мне выдать в консоль только время и тип?
Спасибо!
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
@stud_55 почему не валидный? Думаю автор просто укоротил его вставив 3 точки.
Согласен. Если убрать ..., комментарии и запятую перед ... JSON станет валидным и его можно будет обработать стандартными средствами.
Вот валидный вариант:
JSON:
{
  "ok": true,
  "events": [
    [
      "GuardOn-1486253766",
      1486253766,          
      "GuardOn",            
      43.871066,            
      56.166916,            
      null,                
      {                  
          "reason": "fob",
          "fob_number": 1
      },
      false
    ]
  ]
}
 
  • Мне нравится
Реакции: Student

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Как мне выдать в консоль только время и тип?
Для питона это не валидный json. Так что чтобы достать из него что-то его нужно парсить как обычный текст.
Вот пример для вашего файла:
Python:
s = ''
with open('test.json', 'r', encoding='utf-8') as f:
    for i in f:
        if 'GuardOn-' in i:
            s = i.strip().split('"')[1]

s = s.split('-')
print('Время:', s[1])
print('Тип:', s[0])
 
  • Мне нравится
Реакции: Student

Student

throw exception
Команда форума
Администратор
Апр 2, 2020
195
103
43
Москва
@stud_55 почему не валидный? Думаю автор просто укоротил его вставив 3 точки.

Python:
import json

data = open("test.json", "r")
events = json.loads(data.read())
data.close()

for event in events["events"]:
    print(event[1]) # время
    print(event[2]) # тип
 

Форум IT Специалистов