使用QT将字符串"info.type"或者"a.b.c"类似的格式转为json
时间: 2023-10-16 19:22:00 浏览: 102
可以使用QJsonDocument和QJsonObject类来实现将字符串转换为JSON格式。以下是一个示例代码:
```cpp
QString str = "info.type"; // 待转换的字符串
QStringList keys = str.split('.'); // 分割字符串
QJsonObject jsonObj;
QJsonObject tempObj = jsonObj;
for (int i = 0; i < keys.count(); i++) {
QString key = keys.at(i);
if (i == keys.count() - 1) {
// 最后一个key,设置为字符串类型
tempObj.insert(key, QJsonValue::fromVariant("value"));
} else {
// 非最后一个key,设置为对象类型
QJsonObject obj;
tempObj.insert(key, obj);
tempObj = obj;
}
}
// 将QJsonObject转为QJsonDocument
QJsonDocument jsonDoc(jsonObj);
QString jsonStr = jsonDoc.toJson(QJsonDocument::Compact); // 转换为字符串格式
```
上述代码将字符串"info.type"转换为以下JSON格式的字符串:
```json
{
"info": {
"type": "value"
}
}
```
同理,如果将字符串"a.b.c"转换为JSON格式,可以使用以下代码:
```cpp
QString str = "a.b.c"; // 待转换的字符串
QStringList keys = str.split('.'); // 分割字符串
QJsonObject jsonObj;
QJsonObject tempObj = jsonObj;
for (int i = 0; i < keys.count(); i++) {
QString key = keys.at(i);
if (i == keys.count() - 1) {
// 最后一个key,设置为字符串类型
tempObj.insert(key, QJsonValue::fromVariant("value"));
} else {
// 非最后一个key,设置为对象类型
QJsonObject obj;
tempObj.insert(key, obj);
tempObj = obj;
}
}
// 将QJsonObject转为QJsonDocument
QJsonDocument jsonDoc(jsonObj);
QString jsonStr = jsonDoc.toJson(QJsonDocument::Compact); // 转换为字符串格式
```
上述代码将字符串"a.b.c"转换为以下JSON格式的字符串:
```json
{
"a": {
"b": {
"c": "value"
}
}
}
```
阅读全文