Medium.com Неверный Json? - PullRequest
       49

Medium.com Неверный Json?

0 голосов
/ 25 октября 2018

Я пытаюсь получить последние сообщения от Medium.com, поэтому, например, я иду сюда

https://medium.com/circle-blog/latest?format=json

Но когда я копирую и вставляю весь этот JSON в JSONEditorOnline.org, Я получаю сообщение об ошибке:

Error: Parse error on line 1:
])}while(1);</x>{"su
^
Expecting 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '{', '[', got ']'

Я понимаю, что ошибка из-за случайных вещей в передней части

])}while(1);</x>

Так как бы это удалить с помощью Python?

После удаления я хочу выгрузить его в файл JSON

with open('medium.json', 'w') as json1:
    json1.write(json.dumps(JSONWITHWHILE(1)REMOVED))

Как мне поступить?

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

Я бы не стал беспокоиться об этом, поскольку он, очевидно, не является допустимым 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-хакерство », что бы это ни значило.

0 голосов
/ 25 октября 2018

Вы можете попробовать разбить эту строку на </x> и затем получить второй индекс:

clean_json = raw_json.split('</x>')[1]
...