2017-09-24 70 views
0

我使用nlohmann的json.hpp解析json文件。 JSON文件的,我關心的是看起來像這樣的部分:C++返回類型的函數返回json數組通過nlohmann json.hpp

"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

嘗試自動。查找文檔。 – 2017-09-24 22:04:13

+0

我正在使用C++ 11 – interwebjill

回答

1

一個關於這個庫的好處之一是,轉換到標準類型內置,做你想讓他們做的事情(庫還提供了一種機制,以做到的轉換和從用戶提供的類型) 。

在這種情況下,你可以使用:

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

如果在運行時,JSON子對象不能轉換爲std::vector<int>,該轉換將拋出一個type_error