c++ return 函数类型 returning json array via nlohmann json.hpp
c++ return type of function returning json array via nlohmann json.hpp
我正在使用 nlohmann 的 json.hpp 解析 json 文件。我关心的 json 文件部分如下所示:
"image_captureOptions": {
"captureInterval" : 1000,
"captureLimit" : 5,
"imageExtension" : "jpg",
"imageResizeDims" : [640, 480]
},
...
解析 json 的 class 的相关部分如下所示:
namespace json = nlohmann;
class ConfigReader {
json::json data;
void readConfigFile(std::string path) {
std::ifstream inputStream(path);
inputStream >> data;
}
public:
ConfigReader() {
static const std::string defaultPath = "config.json";
readConfigFile(defaultPath);
}
int getImageCaptureInterval() { return data["image_captureOptions"]["captureInterval"]; }
int getImageCaptureLimit() { return data["image_captureOptions"]["captureLimit"]; }
std::string getImageExtension() { return data["image_captureOptions"]["imageExtension"]; }
???? getImageResizeDims() { return data["image_captureOptions"]["imageResizeDims"]; }
};
最后一行的问号表示我对如何指定该函数的 return 类型感到困惑。
这个库的一个好处是内置了到标准类型的转换,并且可以做你想让它们做的事情(这个库还提供了一种机制来与用户提供的类型进行转换).
在这种情况下,您可以使用:
std::vector<int> getImageResizeDims() {
return data["image_captureOptions"]["imageResizeDims"];
}
如果 json 子对象在运行时无法转换为 std::vector<int>
,该转换将抛出 type_error
。
我正在使用 nlohmann 的 json.hpp 解析 json 文件。我关心的 json 文件部分如下所示:
"image_captureOptions": {
"captureInterval" : 1000,
"captureLimit" : 5,
"imageExtension" : "jpg",
"imageResizeDims" : [640, 480]
},
...
解析 json 的 class 的相关部分如下所示:
namespace json = nlohmann;
class ConfigReader {
json::json data;
void readConfigFile(std::string path) {
std::ifstream inputStream(path);
inputStream >> data;
}
public:
ConfigReader() {
static const std::string defaultPath = "config.json";
readConfigFile(defaultPath);
}
int getImageCaptureInterval() { return data["image_captureOptions"]["captureInterval"]; }
int getImageCaptureLimit() { return data["image_captureOptions"]["captureLimit"]; }
std::string getImageExtension() { return data["image_captureOptions"]["imageExtension"]; }
???? getImageResizeDims() { return data["image_captureOptions"]["imageResizeDims"]; }
};
最后一行的问号表示我对如何指定该函数的 return 类型感到困惑。
这个库的一个好处是内置了到标准类型的转换,并且可以做你想让它们做的事情(这个库还提供了一种机制来与用户提供的类型进行转换).
在这种情况下,您可以使用:
std::vector<int> getImageResizeDims() {
return data["image_captureOptions"]["imageResizeDims"];
}
如果 json 子对象在运行时无法转换为 std::vector<int>
,该转换将抛出 type_error
。