map转json中字符串类型的以0开头的丢失
时间: 2024-03-03 15:47:11 浏览: 57
Map转成json
4星 · 用户满意度95%
如果你要转换的 map 中包含字符串类型的以 0 开头的值,也会遇到类似的问题。因为 JSON 规范中,字符串类型的值也不能以 0 开头,否则会被解析为八进制数。解决方法与上面的情况类似,可以将这些字符串类型的值转换为字符串字面量,再进行转换。具体来说,你可以使用双引号将这些字符串括起来,从而将其转换为 JSON 字符串类型。示例代码如下:
```cpp
#include <iostream>
#include <map>
#include <nlohmann/json.hpp>
int main() {
std::map<std::string, std::string> my_map{{"key1", "123"}, {"key2", "0123"}};
nlohmann::json my_json;
for (const auto& [key, value] : my_map) {
// 如果 value 以 0 开头,则将其转换为字符串字面量
if (value.size() > 1 && value[0] == '0') {
my_json[key] = "\"" + value + "\"";
} else {
my_json[key] = value;
}
}
std::cout << my_json.dump() << std::endl; // 输出 {"key1":"123","key2":"0123"}
return 0;
}
```
在上面的代码中,我们遍历 map 中的每个键值对,如果值以 0 开头,则将其转换为字符串字面量,再存入 JSON 对象中。最后输出的 JSON 对象中,键 "key2" 对应的值为 "0123",而不是 83。
阅读全文