从字符串中读取数组元素
Reading array elements from string
我有一个编码为数据库字符串的 pairs<string,string>
数组,我试图访问数组元素以最终构造一个 std::map<std::string,std::string>
但尝试从我的字符串访问数组元素给了我一个异常
bool
test_json_map_string_string() {
std::string database_string { "[{\"bootloaderVersion\":\"4\"},{\"date\":\"2021/09/24\"},{\"type\":\"5\"},{\"version\":\"175\"}]"};
// database_string=[{"bootloaderVersion":"4"},{"date":"2021/09/24"},{"type":"5"},{"version":"175"}]
std::cout << "database_string=" << database_string << std::endl;
using json = nlohmann::json;
try {
json object_array = json::array();
json json_str( database_string );
json_str.get_to(object_array);
// object_array.size=1 object_array.is_array=0
std::cout << "object_array.size=" << object_array.size() << " object_array.is_array=" << object_array.is_array() << std::endl;
for( size_t index = 0; index < object_array.size(); ++index ) {
// object_array[0] =
std::cout << "object_array[" << index << "] = " << object_array[index] << std::endl;
}
return true;
} catch( const std::exception& except ) {
// except=[json.exception.type_error.305] cannot use operator[] with a numeric argument with string
std::cerr << "except=" << except.what() << std::endl;
return false;
}
}
如何使用 std::string 初始化 nlohmann::json,然后访问其中的数组元素?
我用的方法好像不能识别数组
此致
get_to()
是赋值,不解析。你想要的是:
json object_array = json::parse(database_string);
我有一个编码为数据库字符串的 pairs<string,string>
数组,我试图访问数组元素以最终构造一个 std::map<std::string,std::string>
但尝试从我的字符串访问数组元素给了我一个异常
bool
test_json_map_string_string() {
std::string database_string { "[{\"bootloaderVersion\":\"4\"},{\"date\":\"2021/09/24\"},{\"type\":\"5\"},{\"version\":\"175\"}]"};
// database_string=[{"bootloaderVersion":"4"},{"date":"2021/09/24"},{"type":"5"},{"version":"175"}]
std::cout << "database_string=" << database_string << std::endl;
using json = nlohmann::json;
try {
json object_array = json::array();
json json_str( database_string );
json_str.get_to(object_array);
// object_array.size=1 object_array.is_array=0
std::cout << "object_array.size=" << object_array.size() << " object_array.is_array=" << object_array.is_array() << std::endl;
for( size_t index = 0; index < object_array.size(); ++index ) {
// object_array[0] =
std::cout << "object_array[" << index << "] = " << object_array[index] << std::endl;
}
return true;
} catch( const std::exception& except ) {
// except=[json.exception.type_error.305] cannot use operator[] with a numeric argument with string
std::cerr << "except=" << except.what() << std::endl;
return false;
}
}
如何使用 std::string 初始化 nlohmann::json,然后访问其中的数组元素? 我用的方法好像不能识别数组
此致
get_to()
是赋值,不解析。你想要的是:
json object_array = json::parse(database_string);