主要任务:通过Qt5完成对Json格式的文件的读写操作。

①首先读取json文件进行解析  ②对读取出来的东西判断是QJsonObject还是QJsonArray类型③对相应的类型根据提供的key去查找或者修改相对应的值

主要技术:

(1)     Qt中常见的读写文件代码

读文件QString fileName = "D:\Lib\1.txt";QString str;QFile file(fileName);

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

{

QMessageBox::warning(this,"Warnning","can't open",QMessageBox::Yes);

}

QTextStream in(&file);str=in.readLine();//读取一行//如果读取多行

QString str2[MAX];

for(int 1=0 ;i<MAX; i++)

str2[i]=in.readLine();

file.close();

写文件QStringfileName=“D:/Lib/1.txt");

QStringstr="CSDN";

QFile file(fileName);

if(!file.open(QIODevice::ReadWrite | QIODevice::Text))

{

QMessageBox::warning(this,"sdf","can'topen",QMessageBox::Yes);

}

QTextStream in(&file);

in<<str<<"\n";//如果写多行,同上循环即可

file.close

(2)     在Qt读写json中主要用到这几个类QJsonDocument、QJsonObject、QJsonArray

QJsonDocument:可以从一个基于文本表示的UTF-8编码,又可以从Qt自己的二进制格式读取和写入这个文件。QJsonDocument有效解析后的文档可以使用!iSNull()判断。使用isArray()和isObject()来判断是否包含一个数组或对象。文档中包含的数组或对象可以使用array()或object()进行检索,然后读取或操纵。

QJsonObject:用于封装JSON对象

JSON对象是键值对,其中键是唯一的字符串,其值由QJsonValue代表。一个QJsonObject可以从QVariantMap转换/被转换

QJsonArray: 用于封装JSON数组

一个JSON数组列表值。该列表可以通过从阵列插入和移除QJsonValue的操纵。一个QJsonArray可以从QVariantList转换为/被转换

代码优化:为了防止json文件过大,读取数据时,特别是键很长的时候需要花很多时间和内存,此时的解决方案最好通过设置一个中间层,这个中间层主要是通过一个map映射,把那些文件中的键缩短一个可以区分的标识,这样读写减少读取时间,但是这样会带来一个问题提供的标识往往不能完全区分文件中所有的键。

Qt5对Json的读写的更多相关文章

  1. QT5 解析JSON文件

    QT读JSON文件步骤,这里把过程记录一下,网上大多都是怎么写json的,对于读的,记录的不多 首先JSON文件格式必须为UTF-8(非UTF-8 with BOM),UTF-8 with BOM 即 ...

  2. Delphi中Json格式读写

    Json是一种轻量级传输数据格式,广泛应用互联网和各应用中.json主要採用键值对来表示数据项.多个数据项之间用逗号分隔,也能够用于数组.以下注重介绍一下在delphi中使用json,在delphi中 ...

  3. Json 文件读写以及和IniFile 转换

    JSON 文件是越来越受欢迎了,以前程序配置文件用Ini,Ini 简练,简单.方便,但是也有不少缺点,比如,没有 JSON 直观,无法存储复杂点的数据类型. 于是乎,我封装了一个TJsonFile 的 ...

  4. json文件读写函数

    老师代码: import json def op_data(filename,dic=None): if dic:#写入进去 with open(filename,'w',encoding='utf- ...

  5. python json 文件读写

    import json test_dict = {,,,} print(test_dict) print(type(test_dict))#字典 #dumps 将数据转换成字符串 json_str = ...

  6. json 文件读写

    #coding=utf- import json data ={","version":"0.0.0","desc":{" ...

  7. 仅使用JsonUtility和File类实现Json数据读写

    using System.Collections; using System.Collections.Generic; using UnityEngine; using System; using S ...

  8. 仅使用JsonUtility && File类实现Json数据读写

    using System.Collections; using System.Collections.Generic; using UnityEngine; using System; using S ...

  9. 回归Qt——写在Qt5.10发布之日

    今天偶然看到一条关于Qt5.10发布的消息,发现Qt经历了诺基亚风波之后发展得依然良好,感到很欣慰.回头看上次关注Qt技术还是2011年,那时候用Qt4.7做一个小项目,对于一个写Win32界面和MF ...

随机推荐

  1. python基础之元组(Tuple)、字典(Dictionary)详解

    元组定义 元组是另一个数据类型,类似于List(列表). 元组用”()”标识.内部元素用逗号隔开.但是元素不能二次赋值,相当于只读列表. 举例: tuple = ( ‘abcd’, 786 , 2.2 ...

  2. 简单学c——前言

      1.学C语言需要什么基础吗? 零基础. 2.什么是C语言? C语言是一种编程语言. 3.什么是编程语言? 编程语言是用来定义计算机程序的形式语言,是一种被标准化的交流技巧,用来向计算机发出指令. ...

  3. 算术编码JM实现

    h.264标准中,CABAC的算术编码部分(9.3.4)只是一个参考,实际编码器中并不一定会按照它来实现,像JM中就有自己的算术编码实现方案. 在上篇文章CABAC中有详细的算术编码描述,在了解算术编 ...

  4. Qt写的截图软件包含源代码和可执行程序

    http://blog.yundiantech.com/?log=blog&id=14 Qt写的截图软件包含源代码和可执行程序 http://download.csdn.net/downloa ...

  5. Qt动画与Qt坐标小记

    Qt动画 转载自: <http://jingyan.baidu.com/article/154b46315757b628ca8f4116.html> 和  <http://blog. ...

  6. JSch - Java实现的SFTP(文件上传详解篇)(转)

    JSch是Java Secure Channel的缩写.JSch是一个SSH2的纯Java实现.它允许你连接到一个SSH服务器,并且可以使用端口转发,X11转发,文件传输等,当然你也可以集成它的功能到 ...

  7. 【POJ】2001 Shortest Prefixes

    字典树. #include <cstdio> #include <cstring> #include <cstdlib> #define MAXN 26 typed ...

  8. 从PowerDesigner概念设计模型(CDM)中的3种实体关系说起

    转:http://www.cnblogs.com/xingyukun/archive/2007/08/02/840293.html CDM是大多数开发者使用PD时最先创建的模型,也是整个数据库设计最高 ...

  9. [XenServer] XenServer修改IP 以及 root密码

     A.修改IP以及DNS 1. root用户登录console 2.输入命令获得UUID xe pif-list 3.利用UUID查看之前的IP,注意替换下面的1111111111 xe pif-pa ...

  10. 学习嵌入式Linux有没有一个最佳的顺序(持续更新)

    作为一个嵌入式Linux的初学者,我知道我可能将长期处于初学者阶段,因为我至今仍然没有能够摸索出一条很好的道路让我由初学者进入到更高级阶段.但是我始终没有放弃,本篇文章就是用来记录我学习嵌入式Linu ...