如何从nlohmann::json动态获取result对象首个键值对?
处理nlohmann::json动态键值的实现方法
要提取result对象中的第一个动态键及其对应的整数数组,直接通过迭代器访问对象的第一个元素即可,具体实现步骤如下:
获取查询返回的
result对象
假设你已经拿到了查询返回的完整nlohmann::json数据,先定位到result节点:nlohmann::json response = /* 查询返回的JSON数据 */; auto& result_obj = response["result"];校验对象合法性
先确保result是一个非空的JSON对象,避免后续操作出错:if (!result_obj.is_object() || result_obj.empty()) { // 处理错误逻辑,比如抛出异常、返回错误码等 return; }提取第一个键和对应数组
通过begin()获取对象第一个元素的迭代器,分别提取键和数组:auto first_entry = result_obj.begin(); std::string a = first_entry->first; // 第一个动态键存入变量a // 将对应的整数数组存入变量b,同时可添加类型校验 if (first_entry->second.is_array()) { std::vector<int> b = first_entry->second.get<std::vector<int>>(); // 后续使用变量a和b的逻辑 } else { // 处理值不是整数数组的错误情况 }
补充说明
- 如果需要保持键的插入顺序(而非默认的字典序),可以使用
nlohmann::ordered_json替代nlohmann::json,上述代码逻辑完全通用。 get<std::vector<int>>()会在值类型不匹配时抛出异常,若需避免异常,可改用get_to()并检查返回值,或者提前用is_number_integer()遍历数组元素做类型校验。
内容的提问来源于stack exchange,提问作者Senor Maldona
相关产品推荐
相关产品推荐

