我正在使用nlohmann的json.hpp解析json文件。我关注的json文件的部分看起来像这样:
"image_captureOptions": {
"captureInterval" : 1000,
"captureLimit" : 5,
"imageExtension" : "jpg",
"imageResizeDims" : [640, 480]
},
...
解析json的类的相关部分如下所示:
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"]; }
};
最后一行的问号代表了我对如何指定该函数的返回类型的困惑。
答案 0 :(得分:1)
这个库的一个好处是内置了对标准类型的转换并完成了你希望它们做的事情(该库还提供了一种与用户提供的类型进行转换的机制)。
在这种情况下,你可以使用它:
std::vector<int> getImageResizeDims() {
return data["image_captureOptions"]["imageResizeDims"];
}
如果运行时的json子对象无法转换为std::vector<int>
,则该转换将抛出type_error
。