在将近一年的开发之后,JSON for Modern C++ 终于发布了它的全新版本,这是一个主要的版本。由于坚持语义化,所以该版本会有一些破坏性的变更,建议在更新之前仔细阅读发布说明。此外,还增加了一些新功能,修复了很多错误,并排除了一些不一致之处。
下面接着看一下部分更新的内容。
破坏性的变更
- 该库现在使用用户定义的异常,而不是重复使用
<stdexcept>
(#244)中定义的异常。这不仅可以向异常中添加更多的信息(每个异常现在都有一个标识符,解析错误包含错误的位置),而且还可以轻松捕获所有的异常catch(json::exception)
- 当使用与 UTF-8 不同编码的字符串在 JSON 中进行值存储时,由于仅支持 UTF-8,所以它们的序列化不能被库本身解析。为了强制实现这个库的限制并提高一致性,在序列化过程中,非 UTF-8 编码的字符串现在会产生一个
json::type_error
异常 (#838)。UTF-8 的有效性检验是通过 Björn Hoehrmann 的代码实现的 - NaN 和 infinity 值现在可以存储在 JSON 值内而不会引发异常。但是,它们仍然是序列化的
null
(#388) - 该库的迭代器标签已从RandomAccessIterator更改为 BidirectionalIterator (#593)
- 该库现在没有包括标准的头文件
<iostream>
,<ctype>
和<stdexcept>
等等。您可能需要将这些头文件添加到依赖它们的代码中 - 已删除2.0.0 版中已弃用的构造函数
explicit basic_json(std::istream& i, const parser_callback_t cb = nullptr)
(#480)
关于已弃用的功能、新增特性、更多的变更、以及迁移指南,请参阅发布说明。
下载地址
转自 http://www.oschina.net/news/91620/json-hpp-3-0-0-released