从字符串中读取数组元素

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);

示例: https://godbolt.org/z/WsrvEc5MK