JSON for Modern C++ 3.11.2 现已发布,修复了 3.11.1 版本中的一些错误。此外,库的结构也已经过重组;所有的改变都是向后兼容的。
具体更新内容包括:
Bug 修复
- 修复在 3.11.0 版本中
valuefunction 因字符串、大小类型和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
改进
进一步的变化
文档
Community
CI
已弃用的功能
- 此版本废除了通过 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