C++ 如何在C++;?
目前,我有一个JSON文件(Test.JSON),其中包含一些JSON格式的有效数据,我正在尝试使用JSON对象(readData)解析数据,如下所示C++ 如何在C++;?,c++,json,jsoncpp,C++,Json,Jsoncpp,目前,我有一个JSON文件(Test.JSON),其中包含一些JSON格式的有效数据,我正在尝试使用JSON对象(readData)解析数据,如下所示 Json::Value readData; std::ifstream readFile("Test.json"); readFile >> readData; 如果json文件具有json格式的有效内容,则此方法可以正常工作,但如果内容不是json格式,则会在“readFile>>readData”处崩溃。 是否有任何
Json::Value readData;
std::ifstream readFile("Test.json");
readFile >> readData;
如果json文件具有json格式的有效内容,则此方法可以正常工作,但如果内容不是json格式,则会在“readFile>>readData”处崩溃。
是否有任何方法在将文件分配给C++中的JSON对象之前验证它? < p>它没有“崩溃”;我猜你没有抓住那个例外
无论如何,对于阅读JSON,您可能需要使用。这允许您设置选项,并返回true
或false
。您使用的操作符>
只是一个快捷方式
请阅读您使用的函数的文档。它是用来帮助您的。我认为您应该使用此代码。它不会使程序崩溃。它只会显示(在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;
}
Json::Value readData;
std::ifstream readFile(“Test.json”);
如果(读取文件){
试一试{
读取文件>>读取数据;
}捕获(const std::exception&e){
std::cerrstd::ifstream readFile(Test.json);
不会编译。我相信你的意思是std::ifstream readFile(“Test.json”)
。如果它崩溃,我的最佳选择是不成功的读取会引发异常。请尝试获取文档以进行确认,或者将您的>
包装在Try
-catch
块中,并尝试捕获正确的异常。您正在使用库吗?@Fureeish确实说了“std::exception parse error”@Azem是的,我正在使用jsoncpp库