Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.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++ 如何使用taocpp json检查值类型为数组的键_C++_Json - Fatal编程技术网

C++ 如何使用taocpp json检查值类型为数组的键

C++ 如何使用taocpp json检查值类型为数组的键,c++,json,C++,Json,需要使用taocpp json查找json对象中是否存在数组。使用optional查找int和boolean等是很容易的,但是如果值是数组,我就不知道如何执行 我试过: v.optional<std::vector<tao::json::value>>("fields"); 但这给了我编译器错误 关于msvc: C:\PROGRA~2\MICROS~1\2017\PROFES~1\VC\Tools\MSVC\1416~1.270\bin\Hostx64\x64\cl.e

需要使用taocpp json查找json对象中是否存在数组。使用optional查找int和boolean等是很容易的,但是如果值是数组,我就不知道如何执行

我试过:

v.optional<std::vector<tao::json::value>>("fields");
但这给了我编译器错误

关于msvc: C:\PROGRA~2\MICROS~1\2017\PROFES~1\VC\Tools\MSVC\1416~1.270\bin\Hostx64\x64\cl.exe/nologo/TP-IC:\devel\cpp\vcpgg\installed\x64 windows\include/DWIN32/D_windows/GR/EHsc/O2/Ob2/DNDEBUG-MD-std:C++++17/showcincludes/Fosrc\cmakfiles\tabgen.dir\file\cmakfiles\cpp.obj/Fdsrc\cmakfiles\tabgen\tabgen\FS-C..\src\cpu-manager c:\devel\cpp\vcpkg\installed\x64 windows\include\tao\json\basic\u value.hpp1308:错误C2440:“返回”:无法从“void”转换为“std::optional,std::allocator>>” 具有 [ _Ty=tao::json::基本值 ] c:\devel\cpp\vcpkg\installed\x64 windows\include\tao\json\basic\u value.hpp1308:注意:void类型的表达式不能转换为其他类型 ..\src\file_manager.cpp24:注意:请参阅正在编译的函数模板实例化'std::optional,std::allocator>>tao::json::basic_value::optional>,char[7]>const K&const' 具有 [ _Ty=tao::json::基本值, K=char[7] ] ..\src\file_manager.cpp24:注意:请参阅正在编译的函数模板实例化'std::optional,std::allocator>>tao::json::basic_value::optional>,char[7]>const K&const' 具有 [ _Ty=tao::json::基本值, K=char[7] ] c:\devel\cpp\vcpkg\installed\x64 windows\include\tao\json\events/virtual\u base.hpp69:注意:请参阅正在编译的类模板实例化“tao::basic\u binary\u view” C:\Program Files x86\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.16.27023\include\filesystem2392:注意:请参阅正在编译的类模板实例化“std::chrono::time\u point”的参考 C:\Program Files x86\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.16.27023\include\type\u traits616:注意:请参阅正在编译的类模板实例化“std::basic\u string\u view>”的参考 C:\Program Files x86\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.16.27023\include\xstring2124:注意:请参阅正在编译的类模板实例化“std::is_converable>>”的参考 具有 [ _StringViewIsh=常量wchar\t* ] C:\Program Files x86\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.16.27023\include\xstring2122:注意:请参阅正在编译的变量模板“const bool conjunction”\u v>>,std::negation>> C:\Program Files x86\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.16.27023\include\xstring2281:注意:请参阅别名模板实例化“std::basic\u string,std::allocator>::::_Is_string\u view\u ish”正在编译 具有 [ _StringViewIsh=常量wchar\t* ]


您知道如何检查是否存在值为array类型的键吗?

找到了另一种方法,使用object\t:

tao::json::value v = tao::json::parse_file("..\\json.json");
std::map<std::string, tao::json::value, std::less<>> o = v.get_object();

{
auto i = o.find("name");
if(i != std::end(o))
{
    std::cout << i->second.get_string();
}

auto i = o.find("NOT_FOUND");
if(i != std::end(o))
{
    std::cout << i->second.get_string();
}
else
{
    std::cout << "NOT_FOUND";
}
}
return 0;

这是一种有效的查找方法,可以清楚地查找对象是否丢失。

为什么不显示错误,它可能包含有用的信息-