JSON for Modern C++ 3.11.2 现已发布,修复了 3.11.1 版本中的一些错误。此外,库的结构也已经过重组;所有的改变都是向后兼容的。
具体更新内容包括:
Bug 修复
- 修复在 3.11.0 版本中
value
function 因字符串、大小类型和nullptr
而损坏的问题。#3652 #3655 #3663 - 修复 json_fwd.hpp header 使其 self-contained,并将其加入到 single-header release 中#3656 #3679 #3687
- 修复在关联容器中用
json_pointer
作为 key 的回归。#3680 #3685 - 为已弃用的 JSON Pointer overloads 的 contains 和 at 添加缺失的约束。#3658 #3681
- 修复了 json_pointer 和字符串
==
和!=
之间的比较。这些比较在 3.10.5 中有效,但在 3.11.0 和 3.11.1 中被破坏。#3654 #3664 - 修复了
std::vector<bool>::reference
和std::vector<bool>::const_reference
在 STL 中分别与basic_json::boolean_t&
和basic_json::boolean_t
相同时的to_json
转换。#3677 #3678
改进
- 重构内联命名空间并允许禁用版本组件。可参阅文档。#3683 #3696 #3697 #3698
- 避免 BJData 解析器中的堆分配。#3637
进一步的变化
文档
- 在每次推送到
develop
分支时发布文档。#3660 #3673 - 为 public API 添加缺失的示例。#3672 #3686
- 修正
json_pointer
文档中的错字。#3692
Community
- 将 Discord chat 的徽章添加到 README 文件中。在现有的沟通渠道之外,这个额外的沟通渠道的目的是为了快速协调贡献者之间的关系。#3651
- 完整的贡献者名单。#3662 #3670
CI
- 从 CI 中删除
macos-10.15
image,因为它已被 GitHub Actions 删除。#3612 #3615 #3626 - 删除 Ubuntu workflow 中的硬编码路径。#3626
- 仅当相关文件已更改时才触发 AppVeyor 构建。#3626
- 修复 CodeQL 警告。#3626
- 协调 GitHub Actions jobs 的命名。#3661
- 添加 labeler action 以根据更改的文件自动添加 PR 标签。#3671 #3674 #3675
- CI 中的 Lint API 文档。#3672
- 添加本地 LGTM 配置并禁止对第三方脚本发出警告。#3643
已弃用的功能
- 此版本废除了通过 operator== 和 operator!= 将 JSON Pointers 与字符串进行比较的做法。要将 json_pointer p 与字符串 s 进行比较,首先将 s 转换成 json_pointer,然后使用 json_pointer::operator== 或 json_pointer::operator!=。#3684
以下功能在早期版本中已被弃用,并将在下一个主要版本(即 4.0.0)中删除:
- 函数
iterator_wrapper
已弃用。请改用 member functionitems()
。 - 函数
friend std::istream& operator<<(basic_json&, std::istream&)
和friend std::ostream& operator>>(const basic_json&, std::ostream&)
已弃用。请使用friend std::istream& operator>>(std::istream&, basic_json&)
和friend operator<<(std::ostream&, const basic_json&)
代替。 - 通过 initializer lists 向解析函数(basic_json::parse, basic_json::accept, basic_json::sax_parse, basic_json::from_cbor, basic_json::from_msgpack, basic_json::from_ubjson, basic_json::from_bson)传递迭代器对或指针/长度对已被弃用。相反,传递两个迭代器;例如,调用 basic_json::from_cbor(ptr, ptr+len) 而不是 basic_json::from_cbor({ptr, len}) 。
- 从 JSON Pointers 到字符串的隐式转换 (
json_pointer::operator string_t
) 已弃用。改为使用json_pointer::to_string
。
所有弃用都带有HEDLEY_DEPRECATED_FOR
注释以报告使用哪个函数来代替。
更新说明:https://github.com/nlohmann/json/releases/tag/v3.11.2
还没有评论,来说两句吧...