Чтение из строки в C++
Текст JSON описывает только данные, без функций C++.
Статический метод nlohmann::json::parse
принимает строку и строит дерево
nlohmann::json. Отдельное поле
достают через at или оператор
[] с именем ключа:
#include <iostream>
#include <nlohmann/json.hpp>
#include <string>
int main() {
std::string raw = R"({"code":"W-3","capacity":40})";
nlohmann::json unit = nlohmann::json::parse(raw);
std::cout << unit.at("code").get<std::string>() << "\n";
std::cout << unit["capacity"].get<int>() << "\n";
return 0;
}
Метод get с типом в угловых скобках
превращает элемент JSON в значение C++.
Если ключ отсутствует, at сообщит
об ошибке, а оператор [] создаст
пустой узел - для чтения надежнее
at.
Круг «запись - чтение» удобно проверить на одном объекте: сначала получают строку, затем снова разбирают ее:
#include <iostream>
#include <nlohmann/json.hpp>
int main() {
nlohmann::json original;
original["code"] = "W-9";
original["capacity"] = 12;
std::string raw = original.dump();
nlohmann::json restored = nlohmann::json::parse(raw);
std::cout << (original == restored) << "\n";
return 0;
}
Разберите строку {"label":"pro","level":2}
в nlohmann::json и выведите оба
поля на отдельных строках.
Соберите JSON с ключами tag и
score, значениями "trial"
и 0. Запишите его в текст,
снова разберите и выведите 1,
если исходный и восстановленный объект
равны, иначе 0.