qt解析封装json

记录Qt的JSON解析封装用法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
QString PackWithUuid(const QJsonObject& obj)
{
if (obj.isEmpty()) return QString();
obj["uuid"] = "uuid";
QJsonDocument doc(obj);
return doc.toJson(QJsonDocument::Compact);
}

QString PackJson(const QString& text)
{
QJsonObject obj;
QJsonObject htmlObj;
htmlObj["text"] = text;

// array
QJsonArray array;
for (int i=0; i<5; ++i) {
array.append(i);
}
htmlObj["array"] = array;
obj["html"] = htmlObj;
return PackWithUuid(obj);
}

bool ParseJson(const QByteArray& json, QString& text)
{
QJsonParseError jsonError;
QJsonDocument doc = QJsonDocument::fromJson(json, &jsonError);
if (jsonError.error != QJsonParseError::NoError) {
return false;
}
if (doc.isObject()) {
QJsonObject obj = doc.object();
if (obj.contains("html")) {
if (obj["html"].isObject()) {
QJsonObject htmlObj = obj["html"].toObject();
if (htmlObj.contains("text")) {
if (htmlObj["text"].isString())
text = htmlObj["text"].toString();
}
if (htmlObj.contains("array")) {
if (htmlObj["array"].isArray()) {
QJsonArray array = htmlObj["array"].toArray();
}
}
}
}
}
return true;
}

作者

tty

发布于

2023-04-13

更新于

2023-08-02

许可协议