QT对JSON的处理

  • JSON的样式
    • 1,Json对象
    • 2,Json数组
  • QT中对JSON处理
    • 1,写入JSON文件
    • 2,解析JSON文件

JSON的样式

1,Json对象

JSON的样式是可以相互嵌套的,作为程序的配置文件,JSON的嵌套不要太多。

{
“age”:“24”,
“name”:“sdf”,
“like”:[“you”,“he”,“she”],//嵌套数组
"person”:{“father”,“mother”}//嵌套对象
`}

2,Json数组

[1,2,3,{“1”:“1”,“2”,“2”,“3”:“3”},[1,2,3,4,5,6,7,8],9]

QT中对JSON处理

需要包含的头文件:

#include <QCoreApplication>
#include <QJsonDocument>
#include <QJsonArray>
#include <QJsonObject>
#include <QByteArray>
#include <QJsonValue>
#include <QFile>
#include <QDebug>

1,写入JSON文件

//1.对象写入JSON文件

///参数:文件的名字
void writeJsonFile(char* filename)
{QJsonObject object{{"property1", 1},{"property2", 2}};QJsonObject Json;//对象插入值Json.insert("name","doudou");Json.insert("age",12);//插入子对象QJsonObject subJon;subJon.insert("city","benjing");Json.insert("now",subJon);//插入数组QJsonArray array;array.insert(0,1);array.insert(1,2);Json.insert("num",array);Json.insert("z",object);//QJsonObject转成QJsonDocument(const QJsonObject &object)QJsonDocument jsonDoc(Json);//将QJsonDocument转成QByteArryQByteArray byteArray=jsonDoc.toJson();//文件操作QFile(const QString &name, QObject *parent)QFile file(filename);//打开文件file.open(QFileDevice::WriteOnly);//写文件file.write(byteArray);
}

//2.数组写入文件

void writeJsonFile2(char* filename)
{QJsonArray Json,subJson;subJson.insert(0,0);subJson.insert(1,1);subJson.insert(2,2);subJson.insert(3,3);subJson.append(4);subJson.append(5);Json.insert(0,subJson);QJsonObject object;object.insert("a","a");object.insert("b","b");object.insert("c","c");object.insert("d","d");Json.append(object);//QJsonObject转成QJsonDocument(const QJsonObject &object)QJsonDocument jsonDoc(Json);//将QJsonDocument转成QByteArryQByteArray byteArray=jsonDoc.toJson();//文件操作QFile(const QString &name, QObject *parent)QFile file(filename);//打开文件file.open(QFileDevice::WriteOnly);//写文件file.write(byteArray);
}

2,解析JSON文件

void readJsonFromFile(char* filename)
{QFile file;//打开的文件名file.setFileName(filename);//打开以读文件file.open(QIODevice::ReadOnly);//读文件所有的数据QByteArray bytearray=file.readAll();//QByteArray转为QJsonDocumentQJsonDocument jsonDoc;jsonDoc.fromJson(bytearray);//QJsonDocument转为QJsonObject还是QJsonArrayif(jsonDoc.isObject()){QJsonObject json=jsonDoc.object();//获取对象中的所有的值QStringList keys =json.keys();//通过迭代器访问元素for(QList<QString>::iterator i=keys.begin();i<keys.end();i++){QChar* k=i->begin();qDebug()<<k;}//通过函数来访问for(int i=0;i<keys.size();i++){QString key=keys.at(i);//根据key值获取value值QJsonValue jsonvalue=json.value(key);QString key1=keys[i];QJsonValue jsonvalue1=json[key];//判断value值的类型if(jsonvalue.isString()){qDebug()<<jsonvalue.toString();}else if(jsonvalue.isDouble()){qDebug()<<jsonvalue.toInt();}else if(jsonvalue.isDouble()){qDebug()<<jsonvalue.toBool();}else if(jsonvalue.isObject()){QJsonObject obj=jsonvalue.toObject();for(int j=0;j<obj.size();j++){QString subkey=keys.at(i);//根据key值获取value值QJsonValue subjsonvalue=json.value(key);qDebug()<<subjsonvalue.toString();}}else if(jsonvalue.isArray()){QJsonArray array=jsonvalue.toArray();for(int j=0;j<array.size();j++){QString subkey=keys.at(i);//根据key值获取value值QJsonValue subjsonvalue=json.value(key);if(subjsonvalue.isString()){qDebug()<<subjsonvalue.toString();}}}}}if(jsonDoc.isArray()){QJsonArray arr=jsonDoc.array();}
}

QT读写JSON文件相关推荐

  1. java如何读写json文件

    java如何读写json文件 在实际项目开发中,有时会遇到一些全局的配置缓存,最好的做法是配置redis数据库作为数据缓存,而当未有配置redis服务器时,读取静态资源文件(如xml.json等)也是 ...

  2. Qt读取Json文件数据

    Qt读取Json文件数据 void TcpServerCfg::initServerCfgList() {serverCfgList.clear();QString name = "./co ...

  3. [QT操作XML]QT读写XML文件,QT修改XML文件

    [QT操作XML]QT读写XML文件 XML简介 QT操作XML,写入.读取.修改 XML效果演示 XML简介 概念:Extensible Markup Language 可扩展标记语言(可扩展:标签 ...

  4. python 读写json文件

    1. python中和json读写相关的主要是json模块的以下四个函数: dumps() 将一个python对象编码为json对象 loads() 讲一个json对象解析为python对象 dump ...

  5. python json loads_python 读写json文件(dump, load),以及对json格式的数据处理(dumps, loads)...

    JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. 1.json.dumps()和json.loads()是json ...

  6. Qt 读写txt文件

    目录 1.写txt文件 2.读txt文件 QT 读写txt文件 二进制文件的读写文件可以使用 QFile 类.QStream 文本文件的读写建议使用 QTextStream 类,它操作文件更加方便. ...

  7. Qt读写JSON,以及使用QTreeView展示和编辑JSON数据

    0.前言 JSON(JavaScript Object Notation)是一种轻量级的结构化数据格式,相对于XML语法更简洁.它具有6种基本数据类型:bool(true或false字符串表示).do ...

  8. python json.load_python 读写json文件(dump, load),以及对json格式的数据处理(dumps, loads)...

    原博文 2018-04-22 09:11 − JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. 1.json.du ...

  9. python 读写 json文件

    json的优势: 1. 数据体积方面. JSON相对于XML来讲,数据的体积小,传递的速度更快些. 2. 传输速度方面. JSON的速度要远远快于XML 3. 数据格式 数据格式比较简单, 易于读写, ...

最新文章

  1. linux快速上手之多服务器间路由配置
  2. python3.4用循环往mysql5.7中写数据并输出
  3. 【Linux】一步一步学Linux——dnsdomainname命令(174)
  4. numpy 转置_Numpy基础:数组转置和轴对换
  5. 数据库基础 数据库设计三大范式
  6. 波音正在对737 Max进行软件升级 改善飞行员培训计划
  7. 点击图片添加文件在Chrome中使用的兼容问题
  8. mysql的分页存储过程,能够传出总记录数
  9. UReport2导出word报错
  10. 史上最全的中药口诀大全
  11. union并不绝对比or的执行效率高
  12. 固态硬盘SSD之Flash闪存的基本概念
  13. 智能家居软件测试用例,智能家居助理HomeAssistant的实践和测试
  14. Markdown中表格中内容换行、左对齐等基本操作
  15. JZOJ-senior-3502. 【NOIP2013模拟11.4B组】方格游戏
  16. Canvas—2D 绘图
  17. 点云损失函数Chamfer Distance 和 Earth Mover‘s Distance
  18. Code With Me插件,IDEA多人协作
  19. 怎样录制gif动态图
  20. fir.im关于iOS Ad hoc内测版下载详细流程

热门文章

  1. VLAN的划分和验证(简易版)
  2. React-Router4 嵌套路由实现的两种方式以及路由过渡动画的实现方式
  3. win系统下不借助任何软件将FLV格式/qlv/ikv格式视频文件转换成mp4格式的视频
  4. 【好工具分享】时间管理利器——今目标
  5. 如何完美适配iPhone4、5、6尺寸和字体问题
  6. 红旗Linux操作系统下载(转)
  7. GAMES104实录 | 如何构建游戏世界(上)
  8. 设置网站服务器,网站服务器如何设置
  9. 计算机网络校园网设计讨论与分析,浅论无线校园网系统分析与设计_计算机网络毕业论文...
  10. 缓存穿透、缓存击穿、缓存雪崩区别