本文将针对使用Qt处理Json文件的过程进行讲解。
Json介绍
Json是一种轻量化的数据交换格式,使用非常方便,采用键值对的方式进行数据保存及索引。同时,Json支持多级嵌套格式,一个Json文件下,可以包含多个子Json内容。一个典型的Json文件格式如下:
1 | { |
使用Qt读取Json文件的步骤
关键类
在Qt中,提供了一些处理Json文件的类,本节列举一些重要的类对其作用和使用方法进行总结。
QJsonDocument
这个类的作用是将一个Utf8类型的字符串转换为一个Json Document对象,其使用方法如下:
1 | QString val = file.readAll(); |
QJsonObject
该类是最关键的一个json类,能够获得一个json对象,通过键即可返回相应的值。
1 | QJsonDocument d = QJsonDocument::fromJson(val.toUtf8()); |
QJsonValue
保存解析json对象得到的值,类型根据值的类型确定。
1 | QJsonValue value = sett2.value(QString("appName")); //获得"appName"键对应的值 |
QJsonArray
获得一系列的json值组成的array,在很多情况下,json键值对保存的不是单一的值,而是若干值组成的列表,通过QJsonArray我们就能得到一个由QJsonValue组成的array,然后可以和vector、string等进行转换,从而完成矩阵或向量数据的导入及处理。
1 | QJsonArray test = item["imp"].toArray(); |
获得所有键值
有些情况下我们需要遍历所有的键值,便利过程的代码如下:
1 | QJsonObject json = doc.object(); |
完整代码
1 | /* test.json */ |