目录
1.Json简介
2.QT中的Json
2.1.QJsonObject
2.1.1.QJsonObject的“增删改查”及遍历
2.2.QJsonArray
2.2.1.QJsonArray的“增删改查”及遍历
3.解析Json文件
4.生成Json文件
Json文件是一种文本文件,常用于轻量级的数据交换,易于人阅读,同时也易于机器解析和生成。
Json中有两种结构:
而且这两种结构还可以相互嵌套
在QT中Json中的“键/值”对集合被理解成一个对象(QJsonObject)。键必须是字符串类型。
一个对象以左括号开始,右括号结束。每个“键”(key)之后跟一个冒号,冒号后面是对应的值(value)。“键/值”对之间用逗号分隔。下面是一个对象的示例。
{
key1:value1,
key2:value2,
}
QJsonObject jsonObj;
//增加键值对
jsonObj.insert("key1",QJsonValue(1));
jsonObj.insert("key2",QJsonValue(2));
jsonObj.insert("key3",QJsonValue(3));
//根据键查找对应的值
jsonObj.value("key1");//返回键“key1”对应的值1
jsonObj.value("key2");//返回键“key2”对应的值2
jsonObj.value("key3");//返回键“key3”对应的值3
//改变键原来对应的值
jsonObj.insert("key1",QJsonValue("change"));//将“key1”对应的值1改为字符串“change”
//删除键值对
jsonObj.take("key1");//删除键“key1”的键值对,并返回对应的值
jsonObj.remove("key2");//删除键“key2”的键值对,无返回值
//遍历QJsonObject::const_iterator是键值对类型
//constBegin是第一个键值对,constEnd是最后一个键值对
for(QJsonObject::const_iterator it=jsonObj.constBegin();it!=jsonObj.constEnd();it++)
{
it.key();
it.value();
}
或者
foreach(QString key, jsonObj.keys())
{
qDebug()< qDebug()< } 数组是值(value)的有序集合,数组以左中括号开始,又中括号结束,值之间用逗号分隔。下面是一个数组的示例。 [ value1, value2, ] 值可以是字符串、数字、bool值、对象或者数组: QJsonArray jsonArray; //在尾部增加值 jsonArray.append(QJsonValue(1)); jsonArray.append(QJsonValue(2)); jsonArray.append(QJsonValue(3)); //根据索引查找对应的值,索引是从0开始 jsonArray.at(0);//返回索引0对应的值1,即第一个值 jsonArray.at(1);//返回索引1对应的值2 jsonArray.at(2);//返回索引2对应的值3 //改变键原来对应的值 jsonArray.insert(0,QJsonValue("change"));//将索引0对应的值1改为字符串“change” //删除值 jsonArray.removeAt(0);//删除索引0对应的值,后面的值向前递补 //遍历 for(int i=0;i { jsonArray.at(i); } 有一个Json文本,QT要怎么读取并解析呢?这就要用到QJsonDocument数据类型了。 QJsonDocument jsonDoc; QFile jsonFile("test.json"); jsonFile.open(QIODevice::ReadOnly); QByteArray jsonData=jsonFile.readAll(); jsonFile.close(); jsonDoc=QJsonDocument::fromJson(jsonData,NULL); //开始解析,解析成QJsonArray 或者QJsonObject 之后就好办了。 QJsonArray jsonArray; QJsonObject jsonObject; if(jsonDoc.isArray()) { jsonArray=jsonDoc.array(); } else if(jsonDoc.isObject()) { jsonObject=jsonDoc.object(); } QFile jsonFile("outJson.json"); jsonFile.open(QIODevice::ReadWrite); //先清空文件 jsonFile.resize(0); //制造jsonObject QJsonObject jsonObject; jsonObject.insert("School","北京一中"); jsonObject.insert("Part", "西城区"); jsonObject.insert("Class", "三年级"); /制造jsonArray QJsonArray jsonArray; jsonArray.append(jsonObject); QJsonDocument jsonDoc; //将jsonArray作为根节点 jsonDoc.setArray(jsonArray); //或者将jsonObject作为根节点 jsonDoc.setObject(jsonObject); //写入文本 jsonFile.write(jsonDoc.toJson()); jsonFile.close();2.2.QJsonArray
2.2.1.QJsonArray的“增删改查”及遍历
3.解析Json文件
4.生成Json文件