当前位置: 首页 > 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.mrgr.cn/news/69296.html

相关文章:

  • ISAAC SIM踩坑记录--ROS2相机影像发布
  • 【代码随想录】刷题记录(31)-有效的括号
  • 大数据应用开发——实时数据采集
  • OpenTelemetry 赋能DevOps流程的可观测性革命
  • 如何在Debian系统里使用Redhat(CentOS)的方式配置网络
  • MySQL —— MySQL逻辑架构与查询过程
  • react的创建与书写
  • Java 的 Scanner 类:控制台输入与文件扫描
  • 第 1 章 - Go语言简介
  • 软考:论容器编排
  • 介绍一下数组(c基础)(详细版)
  • 2024年3月电子学会Python等级考试试卷(五级)真题,包含答案
  • DirectShow过滤器开发-写AVI视频文件过滤器
  • C++builder中的人工智能(16):神经网络中的SoftPlus激活函数
  • ubuntu24.04安装matlab失败
  • Rust为什么要搞个match匹配,直接用==判断不行吗(Rust match、Rust ==、Rust模式匹配)
  • vue2 和 vue3的区别
  • Mac 安装protobuf2.5.0
  • 【竞技宝】LOL:JKL回归IG已无可能?
  • 对于app开发者对接广告联盟,需要哪些资质以及变现如何?
  • arkUI:绝对定位、相对定位、Z序控制(position、offset、zIndex)
  • 【C#设计模式(2)——工厂模式】
  • 【初阶数据结构与算法】线性表之单链表的定义与实现
  • 就是这个样的粗爆,手搓一个计算器:十进制到百分比转换器
  • 稳压二极管详解
  • 电磁兼容(EMC):GB 4343.1喀呖声 详解