Как работать с обьектами JSON, когда они имеют переменный тип?
Например я хочу найти все ссылки в экспорте лога чата из TELEGRAM, там "text" то просто строка, то список, внутри которого словарь.
Как красиво и грамотно получить доступ к значению словаря, которое содержит ссылку?
У меня проблема в том, что если пытаться перебирать "text" как список - будут ошибки, из за того, что иногда он не имеет списка.
можно конечно подавлять ошибки, но это тоже имхо не правильно.
набросок кода с костылями (подавление ошибок, элемент списка жеско задан):
import json
json_str = '''
[
{
"id": 5,
"type": "message",
"date": "2019-01-02T12:05:43",
"from": "nik",
"from_id": 12457887,
"text": "hi!"
},
{
"id": 6,
"type": "message",
"date": "2019-01-02T12:05:45",
"from": "nik2",
"from_id": 22457877,
"text": [
"hi tyt info!",
{
"type": "link",
"text": "https://telegra.ph/film-05-01"
},
""
]
}
]
'''
json_data = json.loads(json_str)
for stroka in json_data:
http_data = stroka['text']
try:
print(http_data[1]['text']) # тут номер [1] элемента со ссылкой в списке думаю может меняться, придется перебирать все элементы?
except:
pass
p.s. можно конечно считать весь json файл одной большой строкой и вытаскивать данные строковыми методами или регулярками, но это имхо ужасный костыль, хочется разобраться как пользоваться структурами данных в json'ne.