QBinaryJson Namespace

包含用于将QJsonDocument 转换为 JSON 二进制格式或将其转换为 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)
const char *toRawData(const QJsonDocument &document, int *size)

详细说明

该命名空间提供了一些实用功能,以便与使用 JSON 二进制格式序列化 JSON 的旧代码保持兼容。Qt JSON 类型可转换为 Qt CBOR 类型,而 Qt CBOR 类型又可序列化为 CBOR 二进制格式,反之亦然。

类型文档

enum QBinaryJson::DataValidation

该枚举用于告诉QJsonDocument 在使用fromBinaryData() 或fromRawData() 转换为QJsonDocument 时是否验证二进制数据。

常量说明
QBinaryJson::Validate0使用前验证数据。这是默认值。
QBinaryJson::BypassValidation1绕过数据验证。只有从可信的地方收到数据并知道数据有效时才能使用,因为使用无效数据会导致应用程序崩溃。

函数文档

QJsonDocument QBinaryJson::fromBinaryData(const QByteArray &data, QBinaryJson::DataValidation validation = Validate)

data 创建QJsonDocument

validation 决定数据在使用前是否经过有效性检查。默认情况下,数据是经过验证的。如果 无效,该方法将返回一个空文档。data

注: 保留二进制 JSON 编码只是为了向后兼容。二进制 JSON 编码没有文档说明,而且限制了可编码 JSON 文档的最大大小。Qt JSON 类型可转换为 Qt CBOR 类型,而 Qt CBOR 类型又可序列化为 CBOR 二进制格式,反之亦然。CBOR 格式是一种定义明确、限制较少的 JSON 超集二进制表示法。

另请参阅 toBinaryData(),fromRawData(),DataValidationQCborValue

QJsonDocument QBinaryJson::fromRawData(const char *data, int size, QBinaryJson::DataValidation validation = Validate)

创建一个QJsonDocument ,使用data 的第一个size 字节。它假定data 包含一个二进制编码的 JSON 文档。创建的文档不拥有data 的所有权。数据被复制到不同的数据结构中,之后可以删除或修改原始数据。

data 必须与 4 字节边界对齐。

validation 决定数据在使用前是否经过有效性检查。默认情况下,数据是经过验证的。如果 无效,该方法将返回一个空文件。data

返回代表数据的QJsonDocument

注: 保留二进制 JSON 编码只是为了向后兼容。二进制 JSON 编码没有文档说明,而且限制了可编码 JSON 文档的最大大小。Qt JSON 类型可转换为 Qt CBOR 类型,而 Qt CBOR 类型又可序列化为 CBOR 二进制格式,反之亦然。CBOR 格式是一种定义明确、限制较少的 JSON 超集二进制表示法。

注意: 在 Qt 5.15 之前,只要QJsonDocumentQJsonObjectQJsonArray 仍引用数据,调用者就必须保证data 不会被删除或修改。从 Qt 5.15 开始,这不再是必要的。

另请参阅 toRawData(),fromBinaryData(),DataValidation, 和QCborValue

QByteArray QBinaryJson::toBinaryData(const QJsonDocument &document)

返回document 的二进制表示。

二进制表示法也是 Qt 内部使用的本地格式,转换效率高,速度快。

二进制格式可以存储在磁盘上,并与其他应用程序或计算机交换。fromBinaryData() 可用于将其转换回 JSON 文档。

注意: 保留二进制 JSON 编码只是为了向后兼容。二进制 JSON 编码没有文档说明,而且对可编码的 JSON 文档的最大大小有限制。Qt JSON 类型可转换为 Qt CBOR 类型,而 Qt CBOR 类型又可序列化为 CBOR 二进制格式,反之亦然。CBOR 格式是一种定义明确、限制较少的 JSON 超集二进制表示法。

另请参见 fromBinaryData() 和QCborValue

const char *QBinaryJson::toRawData(const QJsonDocument &document, int *size)

返回document 的原始二进制表示。size 将包含返回数据的大小。

该方法可用于将二进制形式的 JSON 文档流式传输到文件中。

注: 保留二进制 JSON 编码只是为了向后兼容。二进制 JSON 编码没有文档说明,而且限制了可编码 JSON 文档的最大大小。Qt JSON 类型可转换为 Qt CBOR 类型,而 Qt CBOR 类型又可序列化为 CBOR 二进制格式,反之亦然。CBOR 格式是一种定义明确、限制较少的 JSON 超集二进制表示法。

另请参见 fromRawData()、fromBinaryData()、toBinaryData() 和QCborValue

© 2025 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.