Как разобрать с помощью boost, если это не json, а похожий на него?

У меня есть приложение, которое читает какие-то параметры из json-файла, но теперь файл изменился (это не мое решение). Файл выглядит почти так же, но вместо {} в нем стоит [], так что если до сих пор он выглядел как

{
  "A":
  {
    "a":"a",
    "b":"b"
  }
}

теперь это так:

[
  "A":
  [
    "a":"a",
    "b":"b"
  ]
]

Мое приложение написано на C++, поэтому я использовал boost для разбора файла json, но теперь я ищу новый парсер, есть ли способ сделать это с помощью boost?

Я начал искать, но я также задал вопрос, думая, что, возможно, кто-то может помочь мне быстрее, чем я найду ответ. Спасибо


person sop    schedule 19.02.2015    source источник
comment
Вы можете полениться и просто заменить введенные символы, а затем обработать их точно так же, как сейчас. Затем проверьте, есть ли заметное снижение производительности.   -  person Benjamin Lindley    schedule 19.02.2015
comment
Мое приложение написано на C++, поэтому я использовал boost для разбора json-файла — нет, вам определенно не обязательно использовать Boost.   -  person The Paramagnetic Croissant    schedule 19.02.2015
comment
@ThePara MagneticCroissant: правда, мне не нужно использовать усиление, но я его использовал :)   -  person sop    schedule 19.02.2015


Ответы (1)


Это похоже на еще одну производную YAML/Mustache/JSON/....

Без формальной спецификации сложно реально оценить, какие усилия потребуются, но вот список реализаций подобных грамматик в Boost Spirit с разной функциональной полнотой:

Применение игрушечной реализации парсера JSON:

person sehe    schedule 19.02.2015