Я бы не стал беспокоиться об этом, поскольку он, очевидно, не является допустимым JSON, но если вам это нужно, вы можете попробовать найти первую открывающуюся фигурную скобку и просто удалить все перед ней:
valid_json = broken_json[broken_json.find('{'):]
Объяснение:
broken_json.find('{')
возвращает позицию (индекс) первого вхождения символа {
в строке broken_json
broken_json[X:]
- это фрагмент строки, он возвращает подстроку broken_json
, начиная с позиции X
Преимущество решения LeKhan в том, что когда этот JSON станет действительным, ваш код будет по-прежнемуработать даже с этим исправлением на месте.Кроме того, его решение вернет сломанный JSON, если он содержит подстроку </x>
внутри своих полей (что может быть допустимым).
Примечание: это, вероятно, не ошибка, но она намереннопо какой-то причине.Например, модуль Medium JSON feed, который обрабатывает его очень схожим образом - он также удаляет все перед первым открывающимся фигурным скобком.
Согласно этой статье , эточтобы предотвратить « JSON-хакерство », что бы это ни значило.