2016-06-29 2 views
0

В настоящее время я читал в моем файле таким образом:nlohmann JSON чтение из файла

using json = nlohmann::json; 

std::ifstream jsonConfigFileStream("/path/to/file.json", std::ifstream::in); 
json jsonConfigRoot; 

if (jsonConfigFileStream.is_open()) { 
    jsonConfigFileStream >> jsonConfigRoot; 
} 

Однако он держит дает мне ошибку

libc++abi.dylib: terminating with uncaught exception of type std::invalid_argument 
Abort trap: 6 

Ошибка должна быть из кода jsonConfigFileStream >> jsonConfigRoot

Кто-нибудь может просветить меня о том, что происходит?

ответ

1

Возможно, в файле JSON есть ошибка. Проверьте правильность в каком-либо linter. Также nlohmann JSON парсер не нравится оборванных разделителей как

{"node":[1,2,3,4,]} 
       ^

другие терпеть неудачу случай - отсутствие котировки ничего, кроме цифр.

завернуть его в try...catch и регистрации ошибки во время выполнения - в большинстве случаев его действительно объясняет, почему парсинг не удался

если это условие хорошо, то проверить это можно прочитать файл на всех. log content to stdout или kinda.

+0

Спасибо за быстрый ответ! Похоже, что в файле JSON действительно была ошибка, а не код. Существует некорректная цитата « –

+0

С версией 3.0.0 появится более подробное сообщение об исключении, которое включает в себя смещение байта ошибки. –

+0

@NielsLohmann есть какая-либо дорожная карта? Не найдено никакой ссылки с планами. – Sugar

Смежные вопросы