Qt 解析Json

网友投稿 821 2022-05-29

开发环境 Qt5.5.1、Qt Creator 3.5.1

常用的JSON

QJsonDocument有效解析后的文档可以使用!iSNull()判断。使用isArray()和isObject()来判断是否包含一个数组或对象。文档中包含的数组或对象可以使用array()或object()进行检索,然后读取或操纵。

代码如下:

#include

#include

#include

#include

//生成Json

QString generateJsonStr() {

QJsonObject jsonObj;

jsonObj.insert("name", "chy龙神");

jsonObj.insert("age", 24);

jsonObj.insert("man", true);

QJsonDocument document;

document.setObject(jsonObj);

//格式化方式有2种: Compact(压紧)、Indented(缩进排印的,该方法解析出的QJsonValue会带\n)

QByteArray byteArr = document.toJson(QJsonDocument::Compact);

QString jsonStr(byteArr);

qDebug()<<"generateJsonStr: "<

return byteArr;

}

//解析Json

void parseJsonStr(QString jsonStr) {

QJsonParseError jsonParseError;

QJsonDocument document = QJsonDocument::fromJson(jsonStr.toUtf8(), &jsonParseError);

if(jsonParseError.error == QJsonParseError::NoError) {

//isObject()来判断是否包含一个数组或对象

if(document.isObject()) {

QJsonObject jsonObj = document.object();

if(jsonObj.contains("name")) {

QJsonValue nameValue = jsonObj.take("name");

//isXXX有7种类型: isArray、isBool、isDouble、isNull、isObject、isString、isUndefined

if(nameValue.isString()) {

//toXXX有7中类型toArray、toBool、toDouble、toInt、toObject、toString、toVariant

qDebug()<<"parseJsonStr(string name): "<

}

}

Qt 解析Json

if(jsonObj.contains("age")) {

QJsonValue ageValue = jsonObj.take("age");

//isDouble(包括int、float、double等数值类型)

if(ageValue.isDouble()) {

qDebug()<<"parseJsonStr(int age): "<

}

}

if(jsonObj.contains("man")) {

QJsonValue manValue = jsonObj.take("man");

//isDouble(包括int、float、double等数值类型)

if(manValue.isBool()) {

qDebug()<<"parseJsonStr(bool man): "<

}

}

}

} else {

qDebug()<<"parseJsonStr: jsonParseError("<

}

}

//生成JsonArray

QString generateJsonArrayStr() {

QJsonArray jsonArray;

jsonArray.insert(0, QString("chy龙神"));

jsonArray.insert(0, 24);

jsonArray.insert(2, true);

QJsonDocument document;

document.setArray(jsonArray);

QByteArray byteArray = document.toJson(QJsonDocument::Compact);

QString jsonArrayStr(byteArray);

qDebug()<<"generateJsonArrayStr: "<

return jsonArrayStr;

}

//解析JsonArray

void parseJsonArrayStr(QString jsonArrayStr) {

QJsonParseError jsonParseError;

QJsonDocument document = document.fromJson(jsonArrayStr.toUtf8(), &jsonParseError);

if(jsonParseError.error == QJsonParseError::NoError) {

if(document.isArray()) {

QJsonArray jsonArray = document.array();

QString str;

for(int i=0;i

QJsonValue value = jsonArray.at(i);

//注意:这里只有是string类型的才能用toSring输出,如果其他类型用toString会输出空串

if(value.isString()) {

str.append(value.toString());

} else if(value.isDouble()) {

str.append(QString::number(value.toDouble()));

} else if(value.isBool()) {

str.append(value.toBool());

}

str.append(", ");

}

qDebug()<<"parseJsonArrayStr: "<

}

} else {

qDebug()<<"parseJsonArrayStr: jsonParseError("<

}

}

int main(int argc, char *argv[])

{

QString jsonStr = generateJsonStr();

parseJsonStr(jsonStr);

QString jsonArrayStr = generateJsonArrayStr();

parseJsonArrayStr(jsonArrayStr);

return 0;

}

JSON Qt

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:使用python完成mongodb数据库的增删改查
下一篇:PyTorch 多分类损失函数
相关文章