当前位置: 首页 > article >正文

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

QJson-趟过的各种坑【先坑后用法】

  • Chapter1 QJson-趟过的各种坑【先坑后用法】
    • 一、不能处理大数据量,如果你的数据量有百兆左右(特别是有的小伙伴还喜欢json格式化输出的),不要用Qjson,否则会报错 DocumentTooLarge
    • 二、json格式化输出
      • 1.构建json
      • 2.解析json
    • rapidjson


QJsonDocument::Compact的作用

一、主要作用:压缩JSON对象中的空格和换行符,对于接收端只解析其的一部分时非常有用,因为部分解析就是只解析json字符串的一部分,那么这一部分就需要截取,当JSON字符串中存在长度不固定的空格和换行符时,截取位置就不好定义,因为没有规律可寻,使用了这个参数后就能够有效解决这个问题。

二、使用方法:

QJsonObject dataobj;//构建json对象dataobj
dataobj.insert("data",QJsonValue(allquerydata));

QJsonDocument document;
document.setObject(dataobj);
QByteArray simpbyte_array = document.toJson(QJsonDocument::Compact);
QString simpjson_str(simpbyte_array);

Chapter1 QJson-趟过的各种坑【先坑后用法】

原文链接:https://blog.csdn.net/Carry_Qt/article/details/88867537

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

解决办法: 用rapidjson。

二、json格式化输出

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

在这里插入图片描述

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哪个好用? - 知乎


http://www.kler.cn/a/389387.html

相关文章:

  • 远离生成式AI大乱斗,SAS公司揭示亚太区千亿AI市场蓝图
  • qt QKeySequence详解
  • MacOS 本地生成SSH key并关联Github
  • Spring MVC 与 JSP 数据传输
  • ctfshow-web入门-SSTI(web361-web368)上
  • Vue 项目打包后环境变量丢失问题(清除缓存),区分.env和.env.*文件
  • 前端简明教程--初体验
  • 使用vscode 连接linux进行开发
  • 2款使用.NET开发的数据库系统
  • React 探秘(四):手撸 mini-react
  • lua入门教程:type函数
  • 第二十周学习周报
  • 工程认证与Spring Boot:计算机课程管理的新挑战
  • toRef,toRefs,toRaw
  • Centos7 安装RabbitMQ以及web管理插件
  • playwright使用
  • 大模型预训练+微调大模型;大模型提示/指令模式”(Prompt/Instruct Mode)
  • AUTOSAR CP TCP/IP堆栈规范导读
  • 一文熟悉新版llama.cpp使用并本地部署LLAMA
  • 秃姐学AI系列之:GRU——门控循环单元 | LSTM——长短期记忆网络
  • 盲盒小程序开发,盲盒经济正向线上转战发展
  • 地下水数值模拟、 地下水环评、Visual modflow Flex、Modflow
  • 思源笔记轻松连接本地Ollama大语言模型,开启AI写作新体验!
  • nodejs 019: React组件 JSX基础语法规则
  • 【FFmpeg】FFmpeg 函数简介 ③ ( 编解码相关函数 | FFmpeg 源码地址 | FFmpeg 解码器相关 结构体 和 函数 )
  • 管家婆ERP集成金蝶云星空(金蝶云星空主供应链)