Если вы посмотрите на объявление nlohmann::json::operator[]
, оно возвращает reference
, которое определяется как value_type&
, где value_type
определяется как basic_json
.Класс basic_json
имеет оператор преобразования шаблонов, который может преобразовать значение json в любой тип, поддерживаемый методом basic_json::get()
, который включает в себя логические значения, целые числа, строки и т. Д. Итак, по сути, вы делаете следующее:
//std::string deviceName = settings["device"];
std::string deviceName = settings["device"].operator std::string();
//which is effectively
//std::string deviceName = settings["device"].get<std::string>();
//bool yesOrNo = settings["blah"];
bool yesOrNo = settings["blah"].operator bool();
// which is effectively
//bool yesOrNo = settings["blah"].get<bool>();