0

我正在使用 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"]; }
};

最后一行的问号表示我对如何指定该函数的返回类型的困惑。

4

1 回答 1

1

这个库的优点之一是标准类型的转换是内置的,并且可以执行您希望它们执行的操作(该库还提供了一种与用户提供的类型进行转换的机制)。

在这种情况下,您可以使用它:

std::vector<int> getImageResizeDims() {
    return data["image_captureOptions"]["imageResizeDims"];
}

如果 json 子对象在运行时无法转换为 a std::vector<int>,则该转换将抛出type_error.

于 2017-09-24T22:07:32.400 回答