qt中QJsonObject,QJsonDocument,QJsonArray的区别及相互转化

json数据的分析

QJsonArray相当于一个json数组,形如这样

[
{
	"name":"zhangsan",
	"id":"002",
}
{
	"name":"lisi",
	"id":"001",

}

]

那么如何取出第一个大括号的内容呢?
Qjsonarray jsonarray;
jsonarray[0]即为第一个大括号的内容
返回值为QJsonValue,将value值转化为jsonobject对象,直接调用toobject方法

QJsonObject json= jsonarray[0].toObject()

QJsonDocument也是一个很好用的中间人,下述代码可直接将bytearray转为jsondocument.

QJsonDocument ::fromJson(const QByteArray &json, QJsonParseError *error = nullptr)

QjsonDocument jsondoc;
jsondoc[value值]可以直接获取对应键值,可以一直解析到要解析的json对象在转化为json对象,
如jsondoc[value值][value值].toobject

将json数据写入文本文件参考一下代码

QJsonObject alljson;
QJsonDocument doc(alljson);
    QByteArray array = doc.toJson();
    QFile file(path);
    if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
    {
        return false;
    }
    else {
        file.write(array);
        file.close();

    }

将json数据从文本文件中读出

  QByteArray array;
    QFile file(path);
    if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
    {
        return false;
    }
    else {
        array=file.readAll();
        file.close();

    }

     QJsonDocument doc = QJsonDocument::fromJson(array);
     QJsonObject alljson = doc.object();

QString转QJson

QJsonObject QstringToJson(QString jsonString)
{
QJsonDocument jsonDocument = QJsonDocument::fromJson(jsonString.toLocal8Bit().data());
if(jsonDocument.isNull())
{
qDebug()<< "String NULL"<< jsonString.toLocal8Bit().data();
}
QJsonObject jsonObject = jsonDocument.object();
return jsonObject;
}

QJson转QString。

该转换不会产生换行符。

QString JsonToQstring(QJsonObject jsonObject)
{
	QJsonDocument document;
	document.setObject(jsonObject);
	QByteArray simpbyte_array = document.toJson(QJsonDocument::Compact);
	QString simpjson_str(simpbyte_array);
 
	return simpjson_str;
}

QString转QJsonArray 。

bool QstringToJsonarray(const QString &content, QJsonArray &jsonarray)
{
    QString  temp_content = content.trimmed();
    QJsonDocument jsonDocument = QJsonDocument::fromJson(temp_content.toLocal8Bit().data());
    if(jsonDocument.isNull())
    {
        qDebug()<< "String NULL"<< temp_content.toLocal8Bit().data();
        return false;
    }
    jsonarray = jsonDocument.array();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值