QJsonArray 字符串与 QVariantList 对象相互转换的背景

QJsonArray 和 QVariantList 分别是 Qt 中处理 JSON 数据的类和数据类型。QJsonArray 用于表示 JSON 数组,而 QVariantList 是 Qt 中的一个通用列表,可以存储任意类型的数据。

QJsonArray 字符串转换为 QVariantList 对象

1. 首先,需要将 QJsonArray 字符串转换为 QJsonArray 对象。

QString jsonArrayString = "[1,2,3,4,5]"; // QJsonArray 字符串
QJsonDocument jsonDocument = QJsonDocument::fromJson(jsonArrayString.toUtf8()); // 将字符串转换为 QJsonDocument 对象
QJsonArray jsonArray = jsonDocument.array(); // 将 QJsonDocument 对象转换为 QJsonArray 对象
C++

2. 然后,遍历 QJsonArray 对象,将每个值转换为 QVariant 类型,并添加到 QVariantList 对象中。

QVariantList variantList;
foreach (const QJsonValue &jsonValue, jsonArray) {
    variantList.append(jsonValue.toVariant()); // 将 QJsonValue 转换为 QVariant,并添加到 QVariantList 中
}
C++

3. 最终,我们得到了转换后的 QVariantList 对象。

QVariantList 对象转换为 QJsonArray 字符串

1. 首先,创建一个空的 QJsonArray 对象。

QJsonArray jsonArray;
C++

2. 然后,遍历 QVariantList 对象,将每个值转换为 QJsonValue 类型,并添加到 QJsonArray 对象中。

QVariantList variantList = {1, 2, 3, 4, 5}; // 假设我们有一个 QVariantList 对象
foreach (const QVariant &variant, variantList) {
    jsonArray.append(QJsonValue::fromVariant(variant)); // 将 QVariant 转换为 QJsonValue,并添加到 QJsonArray 中
}
C++

3. 最后,将 QJsonArray 对象转换为字符串。

QJsonDocument jsonDocument(jsonArray);
QString jsonArrayString = jsonDocument.toJson(); // 将 QJsonArray 对象转换为 json 字符串
C++

总结

通过上述步骤,我们可以实现 QJsonArray 字符串与 QVariantList 对象的相互转换。通过将 QJsonArray 字符串转换为 QJsonArray 对象,然后遍历 QJsonArray 对象并将每个元素转换为 QVariant 类型,可以得到 QVariantList 对象。相反,通过遍历 QVariantList 对象并将每个值转换为 QJsonValue 类型,然后将 QJsonArray 对象转换为字符串,可以得到 QJsonArray 字符串。这些转换将有助于在 Qt 中处理 JSON 数据时进行数据类型的转换和操作。