Как проверить файл json в C ++? - PullRequest
0 голосов
/ 23 апреля 2020

В настоящее время у меня есть файл JSON (Test. json) с некоторыми действительными данными в формате json, и я пытаюсь проанализировать данные, используя объект json (readData), используя JsonCpp, как показано ниже

Json::Value readData;   
std::ifstream readFile("Test.json");  
readFile >> readData; 

Это прекрасно работает, если файл json имеет допустимое содержимое в формате json, но происходит сбой при "readFile >> readData", если содержимое не имеет формат json. Есть ли способ проверить файл перед тем, как присвоить его объекту json в C ++?

Ответы [ 2 ]

1 голос
/ 23 апреля 2020

Это не "cra sh"; выдает исключение . Я предполагаю, что вы не поймаете это исключение.

В любом случае, для чтения JSON вы, вероятно, захотите использовать parseFromStream. Это позволяет вам установить параметры и возвращает true или false. operator>>, который вы используете, это просто ярлык.

Пожалуйста, прочитайте документацию по функциям, которые вы используете. Он там, чтобы помочь вам.

0 голосов
/ 23 апреля 2020

Я думаю, вы должны использовать этот код вместо. Это не взломает sh программу. Он просто покажет вам (в STDERR), какая ошибка произошла.

Json::Value readData;   
std::ifstream readFile("Test.json");
if (readFile) {
    try {
        readFile >> readData; 
    } catch (const std::exception& e) {
        std::cerr << e.what() << std::endl;
    }
}
else {
    std::cerr << "File not found!" << std::endl;
}

Согласно документации из JsonCpp, operator>>() приводит к std::exception в ошибка разбора.

...