Я столкнулся с небольшим затруднением, используя функцию value
в библиотеке nlohmann/json
. У меня есть пустой json объект, и я хочу либо инициализировать его, либо увеличить его, если инициализированы вложенные ключи. Я пытался решить эту проблему с помощью функции значения, но продолжаю сталкиваться с ошибкой:
C++ exception with description "[json.exception.type_error.306] cannot use value() with null" thrown in the test body.
Итак, это просто не сработает?
nlohmann::json json;
std::string i = "1", j = "2", k = "3";
int old_value = json.value(i, nlohmann::json())
.value(j, nlohmann::json())
.value(k, 0);
json[i][j][k] = old_value + 1;
Edit: для тех, кто хочет лучший способ сделать такие вещи, я нашел лучший способ.
try {
json[i][j][k].get_ref<nlohmann::json::number_integer_t &>()++;
} catch (nlohmann::json::type_error & ex) {
json[i][j][k] = 1;
}