@paper_castle
Фрилансер

Как десериализовать такие JSON-подобные строки?

Есть бд с таблицей приличных размеров (300k), где некоторые поля содержат строки формате, похожем на JSON, но все же с отличиями. Учитывая описания типов на русском подозреваю, что это может быть какой-нибудь выгрузкой из 1С или что-то вроде того.
Кто сталкивался с подобным? Может есть инструменты сериализации этого?

P.S. В любом случае подскажите, куда копать.
Писать парсер с построением syntax tree не хотелось бы, записей много, а данных в них - не настолько.
Регулярки может.
Или попробовать заменить скобки на круглые/квадратные и содержимое строки преобразовать как массив с подмассивами, но хз как это сделать в Python.

Примеры строк:
{"СписокЗначений",{{{"Строка","ВАЗ"},"","0"},{{"Строка","ВАЗ-2108"},"","0"},{{"Строка","ВАЗ-2110"},"","0"},{{"Строка","ВАЗ-21099"},"","0"},{{"Строка","ВАЗ-2111"},"","0"},{{"Строка","ВАЗ-2112"},"","0"}}}

{"СписокЗначений",{{{"Строка","Другие трактора"},"","0"},{{"Строка","ЮМЗ"},"","0"}}}

{"СписокЗначений",{{{"Строка","МАЗ"},"","0"}}}

Upd.: пока что нашел вопрос в котором обсуждалось подобное,
опасения насчет 1С подтверждены
  • Вопрос задан
  • 165 просмотров
Решения вопроса 1
longclaps
@longclaps
Не уверен, что это вас осчастливит.
data = [
    '{"СписокЗначений",{{{"Строка","ВАЗ"},"","0"},{{"Строка","ВАЗ-2108"},"","0"},{{"Строка"'
    ',"ВАЗ-2110"},"","0"},{{"Строка","ВАЗ-21099"},"","0"},{{"Строка","ВАЗ-2111"},"","0"},'
    '{{"Строка","ВАЗ-2112"},"","0"}}}',
    '{"СписокЗначений",{{{"Строка","Другие трактора"},"","0"},{{"Строка","ЮМЗ"},"","0"}}}',
    '{"СписокЗначений",{{{"Строка","МАЗ"},"","0"}}}']
t = str.maketrans('{}', '[]')
for line in data:
    print(eval(line.translate(t)))
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы