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

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.lryc.cn/news/480437.html

相关文章:

  • 基于STM32的hx711称重模块使用
  • Nginx独立项目相关配置说明
  • Nuxt3之使用lighthouse性能测试及性能优化实操
  • ‌webdriver.Chrome()参数简介
  • Ubuntu如何更换环境中的Python版本
  • python-字符串中大写字母转小写,小写字母转大写
  • 前端学习之ES6+
  • yolov10的几种权重文件
  • FPGA视频GTH 8b/10b编解码转PCIE3.0传输,基于XDMA中断架构,提供工程源码和技术支持
  • C++类和对象 (下)
  • 网络层5——IPV6
  • 【wpf】ResourceDictionary 字典资源的用法
  • Foliate:沉浸式阅读!!!
  • 【excel基本操作-sumif绝对引用和相对引用
  • word及Excel常见功能使用
  • 网页中的某个元素高度突然无法设置
  • springboot给不同用户动态定制请求结果思路
  • 【网络】HTTP(超文本传输协议)详解
  • poll()方法和remove()方法的区别是什么?
  • 小程序跳转另一个小程序
  • 介绍一下数组(c基础)(详细版)
  • 工业主板在汽车制造中的应用
  • 博弈论(所有情况最优解)——课堂笔记
  • 深入提升Python编程能力的全方位指南
  • 如何使用 Python 语言的正则表达式进行网页数据的爬取?
  • 剑指offer第七、八天
  • 有哪些常见的方法可以评估中断处理能力?
  • Android GPU纹理数据拷贝
  • 浏览器端直播推流实现——系统篇
  • HDFS和HBase跨集群数据迁移 源码