QJSON数据序列化。
json数据类型包括
int,float,string,bool array[],object,null
[12,12.36,"a",true,null]
一个json对像里,可以包括不同的数据类型。
json一个元素,包括"key":value,key在同级不能有相同的。
json能嵌套,也就是json的对像里面,还可以包括json对像。
{
"a":{"b":1}
"b":{"c":2
"d":["a","b","c"]
}
}
在QT中,有四大类用来操作Json
QJsonDocument,//基本上是utf-8格式来处理数据。
QJsonArray,//是一个值列表。
QJsonObject,//是一个键值对列表。key是唯一的
QJsonValue//封装了JSON支持的其他数据类型。
包括QJsonValue,QJsonObject,QJsonArray,char,QLatin1String,QString,qint64,int,
double,bool QJsonValue :: Type type等等
一、QJsonValue
对数据类型判定方法有如下:
bool isArray();
bool isBool();
bool isDouble();
bool isNull();
bool isObject();
isString();
isUndefined();
//还有转换方法:
toArray(QJsonArray arry);
toArray();
toBool();
toDouble();
toInt();
toObject(QJsonOjbect obj);
toObject();
toString();
toString(QString str);
toVariant();
//不家返回类型
QJsonValue :: Type type()//反回该JsonValue的类型。
二、QJsonObject
"key":QJsonValue,"key1":QJsonValue,"key2":QJsonValue
//添加数据的方法有
insert(QString key,QJsonValue value);
//数量
count();
size();
length();等
//设置数据
QJsonValue vv=QJsonValue :: value(key);
QJsonValue vv=QJsonValue :: [key];
//删除
remove(key);
take(key);
//查找
intrator一个QJsonValue列表 QJsonObject :: find(key);
bool QJsonObject :: contains(key);
//遍历
QStringList QJsonObject :: keys();
iterator迭代器函数遍历
三、QJonArray
数组类
插入数据有
append//尾插
insert//位插
prepend//插入头
push_back//插入尾
push_front//插入头
//数量
count();
size();
//加入QJsonArray的都是QJsonValue类型
//取出数据
at(int i);
first();
last();
//上面得到的Copy份
arr[int i];//原件
//删除数据
erase(iterator i);
pop_back();
pop_front();
removeAt(int i)
removeFirst();
removeLast();
takeAt(int i);//有返回值
//遍历同上QJsonOjbect
四、QJsonDocument类型
构造
QJsonDocument(QJsonDocument && other);
QJsonDocument(QJsonDocument & other);
QJsonDocument(QJsonArray & array);
QJsonDocument(QJsonObject & obj);
array()返回数组QJsonArray
isArray()?
isEmpty()?
isNull()?
isObject()?
//设置内容
setArray(QJsonArray &arry);
setObject(QJsonObject &obj);
array();
object();
//转换
QByteArray toJson();
QByteArray toJson(QJsonDocument :: JsonFormat format);
QByteArray toBinaryData();
//能过静态方法转换为JSON对像
QJsonDocument fromJson(const QByteArray &json,QJsonParseError * error=nullptr);
QJsonDocument fromBinaryData(QByteArray &data);
QJsonDocument fromVariant(const QVariant & var);
//示例如下:
引用
#include <QJsonDocument>
#include <QJsonArray>
#include <QJsonObject>
#include <QJsonValue>
#include<QFile>
void WriteJson()
{
QJsonObject obj;
obj.insert("key","data");
……
//完成内容添加之后
QDocument doc(obj);
QByteArray json=doc.toJson();
QFile file("文件路径.json")
file.open(QFile :: WriteOnly);
file.write(json);
file.close();
}
void ReadJson()
{
QFile file("文件路径.json");
file.open(QFile :: ReadOnly);
QByteArray all=file.readAll();
file.close();
QJsonDocument doc=QJsonDocument :: fromJson(all);
QJsonObject obj=doc.object();
QStringList keys=obj.keys();
for(int i=0;i<keys.size();i++)
{
QJsonValue value=obj.value(keys.at(i));
value.isBool/isArray/isString/isDouble/isObject等等判定数据类型。
特别注意的是,如果是isObject则又可以拆分 它为了一个QJsonObject obj1=value.toObject();
//又可以判定键数量又可以递归循环。
}
}
网硕互联帮助中心






评论前必须登录!
注册