QBinaryJson Namespace
包含用于将QJsonDocument 与JSON二进制格式相互转换的函数。更多内容...
| 头文件: | #include <QBinaryJson> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Core5Compat) target_link_libraries(mytarget PRIVATE Qt6::Core5Compat) |
| qmake: | QT += core5compat |
类型
| enum | DataValidation { Validate, BypassValidation } |
函数
| QJsonDocument | fromBinaryData(const QByteArray &data, QBinaryJson::DataValidation validation = Validate) |
| QJsonDocument | fromRawData(const char *data, int size, QBinaryJson::DataValidation validation = Validate) |
| QByteArray | toBinaryData(const QJsonDocument &document) |
详细说明
该命名空间提供了实用函数,用于保持与旧版代码的兼容性,这些代码使用 JSON 二进制格式来序列化 JSON。Qt JSON 类型可以转换为 Qt CBOR 类型,进而序列化为 CBOR 二进制格式,反之亦然。
类型文档
enum QBinaryJson::DataValidation
此枚举用于告知QJsonDocument ,在通过fromBinaryData()或fromRawData()将数据转换为QJsonDocument 时,是否对二进制数据进行验证。
| 常量 | 常量值 | 描述 |
|---|---|---|
QBinaryJson::Validate | 0 | 在使用数据之前对其进行验证。这是默认设置。 |
QBinaryJson::BypassValidation | 1 | 跳过数据验证。仅当数据来自可信来源且确知其有效时才应使用此选项,因为使用无效数据可能会导致应用程序崩溃。 |
函数文档
QJsonDocument QBinaryJson::fromBinaryData(const QByteArray &data, QBinaryJson::DataValidation validation = Validate)
根据 `data` 创建一个 `QJsonDocument `。
validation 决定在使用数据之前是否对其进行有效性检查。默认情况下会对数据进行验证。如果data 无效,该方法将返回一个null文档。
注意: 二进制 JSON 编码仅为向后兼容而保留。该功能未在文档中说明,且对可编码 JSON 文档的最大大小存在限制。 Qt JSON 类型可转换为 Qt CBOR 类型,后者又可序列化为 CBOR 二进制格式,反之亦然。CBOR 格式是对 JSON 超集的一种定义明确且限制较少的二进制表示形式。
另请参阅 toBinaryData(),fromRawData(),DataValidation 以及QCborValue 。
QJsonDocument QBinaryJson::fromRawData(const char *data, int size, QBinaryJson::DataValidation validation = Validate)
创建一个QJsonDocument 对象,该对象使用data 中的前size 字节。该方法假设data 包含一个二进制编码的JSON文档。创建的文档不会获取data 的所有权。数据会被复制到另一个数据结构中,原始数据随后可以被删除或修改。
data 必须对齐到 4 字节边界。
validation 决定是否在使用数据前对其进行有效性检查。默认情况下会验证数据。如果data 无效,该方法将返回一个 null 文档。
返回一个表示该数据的QJsonDocument 。
注意: 二进制 JSON 编码仅出于向后兼容性而保留。该编码 未在文档中明确说明,且对可编码 JSON 文档的最大大小存在限制。 Qt JSON 类型可转换为 Qt CBOR 类型,后者进而可序列化为 CBOR 二进制格式,反之亦然。CBOR 格式是对 JSON 超集的一种定义明确且限制较少的二进制表示形式。
注意:在 Qt 5.15之前, 调用方必须保证,只要任何QJsonDocument 、QJsonObject 或QJsonArray 仍引用该数据,data 就不会被删除或修改。从 Qt 5.15 开始,这一点已不再必要。
另请参阅 toRawData()、fromBinaryData()、DataValidation 以及QCborValue 。
QByteArray QBinaryJson::toBinaryData(const QJsonDocument &document)
返回document 的二进制表示形式。
该二进制表示形式也是 Qt 内部使用的原生格式,其转换效率极高且速度极快。
二进制格式可以存储在磁盘上,并与其他应用程序或计算机进行交换。可使用 `fromBinaryData()` 将其转换回 JSON 文档。
注意: 二进制 JSON 编码仅为向后兼容而保留。该编码 未在文档中记录,且对可编码的 JSON 文档最大大小有限制。 Qt JSON 类型可以转换为 Qt CBOR 类型,而后者又可以序列化为 CBOR 二进制格式,反之亦然。CBOR 格式是一种定义明确且限制较少的二进制表示形式,它涵盖了 JSON 的超集。
另请参阅 fromBinaryData() 和QCborValue 。
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.