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