boost最近的1.75.0版本新增了三个库,分别是专门用于json相关工作的库JSON,header-only的错误处理库LEAF,实现了基本的reflection的库PFR。
这里我简单地介绍一下JSON的使用,不包含分配器等的运用,就是个quick到不能再quick的quick look。
这里所有的类型、函数等,没有特别说明,都在
boost::json
下
具体的文档在这里:https://www.boost.org/doc/libs/1_75_0/libs/json/doc/html/index.html
常用的类型
名称 | 说明 |
---|---|
value |
用于代表任何JSON数据 |
object |
动态大小的、用于存储key-value对的关联容器 |
array |
动态大小的、用于存储JSON的value的容器 |
key_value_pair |
一个key-value对 |
基本的使用
解析
boost::json提供了三种比较高级的parser,分别是函数parse()
和类parser
、stream_parser
。
parse()函数
函数原型:
value parse(
string_view s,
error_code& ec,
storage_ptr sp = {
},
parse_options const& opt = {
});
value parse(
string_view s,
storage_ptr sp = {
},
parse_options const& opt = {
});
可见,parse()只需要提供一个包含正确格式的json的字符串就可以返回一个包含全部json信息的value。如果格式不正确,返回的value.is_null()为true
。
可选的参数是错误代码error_code,指向value的内存的storage_ptr,可选参数opt。
这里介绍一下opt。opt是一个包含了解析选项的结构体,各个选项的用途看名称就知道:
struct parse_options
{
std::size_t max_depth = 32;
bool allow_comments = false;
bool allow_trailing_commas =