QJson-趟过的各种坑(先坑后用法)

不能处理大数据量,如果你的数据量有百兆左右(特别是有的小伙伴还喜欢json格式化输出的),不要用Qjson,否则会报错 DocumentTooLarge

解决办法:rapidjson

二、json格式化输出

解决办法: QByteArraydata = document.toJson(QJsonDocument::Compact);

QJsonDocument::Indented

{

"Array": [

true,

999,

"string"

],

"Key": "Value",

"null": null

}

QJsonDocument::Compact

{"Array":[true,999,"string"],"Key":"Value","null":null}

QJson使用

#include <QJsonObject>

#include <QJsonParseError>

#include <QJsonArray>

1.构建json

QJsonObject json;

json.insert("Name", "Qt");

json.insert("From", 1991);

json.insert("Cross Platform", true);


QJsonDocument document;

document.setObject(json);

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

2.解析json

QFile file(jsonFilePath);

if (!file.open(QIODevice::ReadOnly))

{

qDebug()<<u8"读取json文件出错";

return;

}

QByteArray data = file.readAll();

file.close();

QJsonParseError jsonpe;

QJsonDocument jsonDocument = QJsonDocument::fromJson(data, &jsonpe);

if (jsonpe.error == QJsonParseError::NoError)

{

if (jsonDocument.isObject())

{

QJsonObject obj = jsonDocument.object();



if(obj.contains("created"))

{

QJsonValue value = obj.take("created");

if(value.isBool())

{

bool m_created = value.toBool();

if(m_created == true)

{

//处理

}

}

}

}

}

else

{

QString errorStr = jsonpe.errorString();

}

rapidjson

rapidjson是腾讯的开源json解析框架,用c++实现。由于全部代码仅用header file实现,所以很容易集成到项目中。rapidjson的性能也非常出色。

各大json库性能测试: jsoncpp和rapidjson哪个好用? - 知乎

官方教程: RapidJSON: 教程

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

搓搓程序狗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值