057-nlohmann_json库的使用
json.hpp 库下载及安装
nlohmann json 的开源项目地址:
https://github.com/nlohmann/json#serialization–deserialization
对于我们项目中要使用 nlohmann json 工具,只需要引入 json.hpp 这一个文件,其中包含所有接口函数,正如其文档中所述 json.hpp 文件在 single_include/nlohmann 目录下,我们只需要下载该文件即可:
git clone https://github.com/nlohmann/json/blob/develop/single_include/nlohmann/json.hpp
注意:不是 include/nlohmann/json.hpp,而是 single_include/nlohmann/json.hpp,前者要包含整个文件夹,后者只需要包含 json.hpp 文件。
用 json 赋值
在使用 nlohmann JSON 库时,如果 JSON 中存储的类型与要赋值的变量类型一致,通常不需要显式地使用 get<>()
进行类型转换。at()
方法会返回一个 JSON 值对象,该对象可以直接赋值给与其类型兼容的变量。
例如:
1 |
|
在这个例子中,j.at("pi")
返回一个 JSON 值对象,该对象可以直接赋值给 float
类型的变量 pi
,因为 JSON 中的值是一个浮点数。同样,j.at("name")
返回一个字符串,可以直接赋值给 std::string
类型的变量 name
。
注意事项
类型匹配:确保 JSON 中的值类型与变量类型匹配,否则会抛出异常。例如,如果 JSON 中的值是整数而你试图将其赋值给浮点数,可能会导致类型不匹配错误。
异常处理:使用
at()
方法时,如果键不存在,会抛出std::out_of_range
异常。因此,确保键存在或使用异常处理机制。类型安全:虽然可以直接赋值,但在某些情况下,显式使用
get<>()
可以提高代码的可读性和类型安全性,特别是在处理复杂数据结构时。char 类型:nlohmann/json 库本身并没有直接支持 char 类型,所以需要转换,赋值给 json 时需要转换为 string 或者 int。