0

Как разобрать неправильный JSON с помощью Python?

9

Я столкнулся с следующей проблемой: у меня есть JSON-строка, получаемая из внешнего источника:

{value: "82363549923gnyh49c9djl239pjm01223", id: 17893}

Это неправильно отформатированная JSON-строка (ключи "id" и "value" должны быть в кавычках), но мне нужно ее распарсить. Я попытался использовать библиотеки simplejson и json-py, но, похоже, они не могут быть настроены для разбора таких строк.

Я использую Python 2.5 на Google App Engine, поэтому любые решения на основе C, такие как python-cjson, не подходят.

Формат входных данных может быть изменен на XML или YAML, помимо упомянутого выше JSON, но я использую JSON в проекте, и менять формат в конкретном месте не было бы лучшим решением.

В настоящее время я перешел на XML и успешно парс lege данные, но надеюсь найти решение, которое позволило бы мне вернуться к JSON.

2 ответ(ов)

0

Да, вы правы! Начиная с версии YAML 1.2, YAML является надмножеством JSON, что позволяет использовать формат JSON в качестве корректного YAML. Это означает, что вы можете загружать строки в формате JSON, используя библиотеку YAML.

Вот пример, как это можно сделать:

import yaml

s = '{value: "82363549923gnyh49c9djl239pjm01223", id: 17893}'
result = yaml.load(s, Loader=yaml.FullLoader)

print(result)

В результате вы получите словарь:

{'id': 17893, 'value': '82363549923gnyh49c9djl239pjm01223'}

Обратите внимание на использование Loader=yaml.FullLoader, что является безопасной практикой при загрузке данных из внешних источников.

0

Вы можете использовать парсер строк для первоначальной обработки, регулярные выражения могут справиться с этим, при условии, что сложность JSON не превысит допустимые пределы.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь