Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在C++;?_C++_Json_Jsoncpp - Fatal编程技术网

C++ 如何在C++;?

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文件(Test.JSON),其中包含一些JSON格式的有效数据,我正在尝试使用JSON对象(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::cerr
std::ifstream readFile(Test.json);
不会编译。我相信你的意思是
std::ifstream readFile(“Test.json”)
。如果它崩溃,我的最佳选择是不成功的读取会引发异常。请尝试获取文档以进行确认,或者将您的
>
包装在
Try
-
catch
块中,并尝试捕获正确的异常。您正在使用库吗?@Fureeish确实说了“std::exception parse error”@Azem是的,我正在使用jsoncpp库