c ++ тип возврата функции, возвращающей массив json через nlohmann json.hpp

Я анализирую файл json с помощью nlohmann’s json.hpp. Часть файла 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

Решение

Одна из приятных особенностей этой библиотеки заключается в том, что преобразования в стандартные типы являются встроенными и выполняют то, что вы хотите, чтобы они делали (библиотека также предоставляет механизм для выполнения преобразований в предоставленные пользователем типы и из них).

В этом случае вы можете просто использовать это:

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

Если подобъект json во время выполнения не может быть преобразован в std::vector<int>, что преобразование бросит type_error,

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]