#include
#include
#include
{
"id":1001,
"name":"jack",
"sex":true
}
// 创建json数据对象
QJsonObject json;
json.insert("name", "jack");
json.insert("id", 1001);
json.insert("sex", true);
QJsonDocument document; // 创建json文档
document.setObject(json); // 给json文档设置json数据对象
// 将json数据对象转为字符串
QByteArray byJsonData = document.toJson(QJsonDocument::Compact);
QString strJson(byJsonData);
{
"id": 1002,
"name": "Tom",
"scoreData":{
"Chinese":96,
"English":82,
"Math":90
},
"sex":true
}
// 创建子节点scoreData的json数据对象
QJsonObject scoreObject;
scoreObject.insert("Math", 90);
scoreObject.insert("Chinese", 96);
scoreObject.insert("English", 82);
// 创建json数据对象
QJsonObject json;
json.insert("name", "Tom");
json.insert("id", 1002);
json.insert("sex", true);
json.insert("scoreData", QJsonValue(scoreObject));
QJsonDocument document;
document.setObject(json);
QByteArray byJsonData = document.toJson(QJsonDocument::Compact);
QString strJson(byJsonData);
{
"id":1002,
"name": "Tom",
"scoreData":{
"Chinese":96,
"English":82,
"Math":90
},
"sex": true,
"techData":["C++", "JAVA", "PYTHON"]
}
// 创建json数组对象
QJsonArray techArray;
techArray.append("C++");
techArray.append("JAVA");
techArray.append("PYTHON");
// 创建子节点scoreData的json数据对象
QJsonObject scoreObject;
scoreObject.insert("Math", 90);
scoreObject.insert("Chinese", 96);
scoreObject.insert("English", 82);
// 创建json对象
QJsonObject json;
json.insert("name", "Tom");
json.insert("id", 1002);
json.insert("sex", true);
json.insert("scoreData", QJsonValue(scoreObject));
json.insert("techData", QJsonValue(techArray));
QJsonDocument document;
document.setObject(json);
QByteArray byJsonData = document.toJson(QJsonDocument::Compact);
QString strJson(byJsonData);
{
"id":1002,
"name": "Tom",
"schoolData":[
{"schoolCity":"Xian","schoolName":"xiaoxue"},
{"schoolCity":"Xian","schoolName":"zhongxue"},
{"schoolCity":"Beijing","schoolName":"daxue"}
],
"scoreData":{
"Chinese":96,
"English":82,
"Math":90
},
"sex":true
}
// 创建json数组
QJsonArray SchoolArray;
QJsonObject primarySchoolObj;
primarySchoolObj.insert("schoolName", "xiaoxue");
primarySchoolObj.insert("schoolCity", "Xian");
QJsonObject middleSchoolObj;
middleSchoolObj.insert("schoolName", "zhongxue");
middleSchoolObj.insert("schoolCity", "Xian");
QJsonObject universityObj;
universityObj.insert("schoolName", "daxue");
universityObj.insert("schoolCity", "Beijing");
// json数组中插入json数据对象
SchoolArray.append(primarySchoolObj);
SchoolArray.append(middleSchoolObj);
SchoolArray.append(universityObj);
// 创建子节点scoreData的json数据对象
QJsonObject scoreObject;
scoreObject.insert("Math", 90);
scoreObject.insert("Chinese", 96);
scoreObject.insert("English", 82);
// 创建json数据
QJsonObject json;
json.insert("name", "Tom");
json.insert("id", 1002);
json.insert("sex", true);
json.insert("scoreData", QJsonValue(scoreObject));
json.insert("schoolData", QJsonValue(SchoolArray));
QJsonDocument document;
document.setObject(json);
QByteArray byJsonData = document.toJson(QJsonDocument::Compact);
QString strJson(byJsonData);
{
"sex":true,
"id":1001,
"name":"jack"
}
strName "jack"
iId 1001
bSex true
QByteArray jsonData = "{\"sex\":true,\"id\":1001,\"name\":\"jack\"}";
// 将字符串转为json文档
QJsonParseError result;
QJsonDocument rootDoc = QJsonDocument::fromJson(jsonData, &result);
if(rootDoc.isNull() || result.error != QJsonParseError::NoError){
qDebug() << "parse json data failed.";
return false;
}
// 获取根对象
QJsonObject rootObj = rootDoc.object();
// 解析json数据
QJsonValue nameValue = rootObj.value("name");
QString strName = nameValue.toString();
qDebug() << "strName" << strName;
QJsonValue idValue = rootObj.value("id");
int iId = idValue.toInt();
qDebug() << "iId" << iId;
QJsonValue sexValue = rootObj.value("sex");
bool bSex = sexValue.toBool();
qDebug() << "bSex" << bSex;
{
"id":1002,
"name":"Tom",
"scoreData":{
"Chinese":96,
"English":82,
"Math":90
},
"sex":true
}
strName "Tom"
iId 1002
bSex true
iChinese 96
iEnglish 82
iMath 90
QByteArray jsonData = "{\"id\":1002,\"name\":\"Tom\",\"scoreData\":{\"Chinese\":96,\"English\":82,\"Math\":90},\"sex\":true}";
QJsonParseError result;
QJsonDocument rootDoc = QJsonDocument::fromJson(jsonData, &result);
if(rootDoc.isNull() || result.error != QJsonParseError::NoError){
qDebug() << "parse json data failed.";
return false;
}
// 获取根对象
QJsonObject rootObj = rootDoc.object();
// 解析json数据
QJsonValue nameValue = rootObj.value("name");
QString strName = nameValue.toString();
qDebug() << "strName" << strName;
QJsonValue idValue = rootObj.value("id");
int iId = idValue.toInt();
qDebug() << "iId" << iId;
QJsonValue sexValue = rootObj.value("sex");
bool bSex = sexValue.toBool();
qDebug() << "bSex" << bSex;
// 解析scoreData节点的json数据
QJsonValue scoreDataValue = rootObj.value("scoreData");
QJsonObject scoreDataObj = scoreDataValue.toObject();
QJsonValue chineseValue = scoreDataObj.value("Chinese");
int iChinese = chineseValue.toInt();
qDebug() << "iChinese" << iChinese;
QJsonValue englishValue = scoreDataObj.value("English");
int iEnglish = englishValue.toInt();
qDebug() << "iEnglish" << iEnglish;
QJsonValue mathValue = scoreDataObj.value("Math");
int iMath = mathValue.toInt();
qDebug() << "iMath" << iMath;
{
"id":1002,
"name":"Tom",
"scoreData":{
"Chinese":96,
"English":82,
"Math":90
},
"sex":true,
"techData":["C++", "JAVA", "PYTHON"]
}
strName "Tom"
iId 1002
bSex true
iChinese 96
iEnglish 82
iMath 90
str "C++"
str "JAVA"
str "PYTHON"
QByteArray jsonData = "{\"id\":1002,\"name\":\"Tom\",\"scoreData\":{\"Chinese\":96,\"English\":82,\"Math\":90},\"sex\":true,\"techData\":[\"C++\",\"JAVA\",\"PYTHON\"]}";
QJsonParseError result;
QJsonDocument rootDoc = QJsonDocument::fromJson(jsonData, &result);
if(rootDoc.isNull() || result.error != QJsonParseError::NoError){
qDebug() << "parse json data failed.";
return false;
}
// 获取根对象
QJsonObject rootObj = rootDoc.object();
// 解析json数据
QJsonValue nameValue = rootObj.value("name");
QString strName = nameValue.toString();
qDebug() << "strName" << strName;
QJsonValue idValue = rootObj.value("id");
int iId = idValue.toInt();
qDebug() << "iId" << iId;
QJsonValue sexValue = rootObj.value("sex");
bool bSex = sexValue.toBool();
qDebug() << "bSex" << bSex;
// 解析scoreData节点的json数据
QJsonValue scoreDataValue = rootObj.value("scoreData");
QJsonObject scoreDataObj = scoreDataValue.toObject();
QJsonValue chineseValue = scoreDataObj.value("Chinese");
int iChinese = chineseValue.toInt();
qDebug() << "iChinese" << iChinese;
QJsonValue englishValue = scoreDataObj.value("English");
int iEnglish = englishValue.toInt();
qDebug() << "iEnglish" << iEnglish;
QJsonValue mathValue = scoreDataObj.value("Math");
int iMath = mathValue.toInt();
qDebug() << "iMath" << iMath;
// 解析techData数组中的json数据
QJsonValue techDataValue = rootObj.value("techData");
QJsonArray techDataArray = techDataValue.toArray();
for(int i = 0; i < techDataArray.size(); i++){
QJsonValue value = techDataArray.at(i);
QString str = value.toString();
qDebug() << "str" << str;
}
{
"id":1002,
"name":"Tom",
"schoolData":[
{
"schoolCity":"Xian",
"schoolName":"xiaoxue"
},
{
"schoolCity":"Xian",
"schoolName":"zhongxue"
},
{
"schoolCity":"Beijing",
"schoolName":"daxue"
}
],
"scoreData":{
"Chinese":96,
"English":82,
"Math":90
},
"sex":true
}
strName "Tom"
iId 1002
bSex true
iChinese 96
iEnglish 82
iMath 90
strSchoolname "xiaoxue"
strSchoolcity "Xian"
strSchoolname "zhongxue"
strSchoolcity "Xian"
strSchoolname "daxue"
strSchoolcity "Beijing"
QByteArray jsonData = "{\"id\":1002,\"name\":\"Tom\",\"schoolData\":[{\"schoolCity\":\"Xian\",\"schoolName\":\"xiaoxue\"},{\"schoolCity\":\"Xian\",\"schoolName\":\"zhongxue\"},{\"schoolCity\":\"Beijing\",\"schoolName\":\"daxue\"}],\"scoreData\":{\"Chinese\":96,\"English\":82,\"Math\":90},\"sex\":true}";
QJsonParseError result;
QJsonDocument rootDoc = QJsonDocument::fromJson(jsonData, &result);
if(rootDoc.isNull() || result.error != QJsonParseError::NoError){
qDebug() << "parse json data failed.";
return false;
}
// 获取根对象
QJsonObject rootObj = rootDoc.object();
// 解析json数据
QJsonValue nameValue = rootObj.value("name");
QString strName = nameValue.toString();
qDebug() << "strName" << strName;
QJsonValue idValue = rootObj.value("id");
int iId = idValue.toInt();
qDebug() << "iId" << iId;
QJsonValue sexValue = rootObj.value("sex");
bool bSex = sexValue.toBool();
qDebug() << "bSex" << bSex;
// 解析scoreData节点的json数据
QJsonValue scoreDataValue = rootObj.value("scoreData");
QJsonObject scoreDataObj = scoreDataValue.toObject();
QJsonValue chineseValue = scoreDataObj.value("Chinese");
int iChinese = chineseValue.toInt();
qDebug() << "iChinese" << iChinese;
QJsonValue englishValue = scoreDataObj.value("English");
int iEnglish = englishValue.toInt();
qDebug() << "iEnglish" << iEnglish;
QJsonValue mathValue = scoreDataObj.value("Math");
int iMath = mathValue.toInt();
qDebug() << "iMath" << iMath;
// 解析schoolData数组对象的json数据
QJsonValue schoolDataValue = rootObj.value("schoolData");
QJsonArray schoolDataValueArray = schoolDataValue.toArray();
for(int i = 0; i < schoolDataValueArray.size(); i++){
QJsonValue value = schoolDataValueArray.at(i);
QJsonObject obj = value.toObject();
QJsonValue schoolnameValue = obj.value("schoolName");
QString strSchoolname = schoolnameValue.toString();
qDebug() << "strSchoolname" << strSchoolname;
QJsonValue schoolcityValue = obj.value("schoolCity");
QString strSchoolcity = schoolcityValue.toString();
qDebug() << "strSchoolcity" << strSchoolcity;
}
{
"id":1002,
"name":"Tom",
"techData":["C++","JAVA","PYTHON"],
"schoolData":[
{"schoolCity":"Xian","schoolName":"xiaoxue"},
{"schoolCity":"Xian","schoolName":"zhongxue"},
{"schoolCity":"Beijing","schoolName":"daxue"}
],
"scoreData":{
"Chinese":96,
"English":82,
"Math":90
},
"sex":true
}
{
"id":1002,
"name":"Jack", // Tom修改为Jack
"techData":["C++","JAVA","GO"], // PYTHON修改为GO
"schoolData":[
{"schoolCity":"Baoji","schoolName":"xiaoxue"}, // Xian改为Baoji
{"schoolCity":"Xian","schoolName":"zhongxue"},
{"schoolCity":"Beijing","schoolName":"daxue"}
],
"scoreData":{
"Chinese":100, // 96修改为100
"English":82,
"Math":90
},
"sex":true
}
QByteArray jsonData = "{\"id\":1002,\"name\":\"Tom\",\"techData\":[\"C++\",\"JAVA\",\"PYTHON\"], \"schoolData\":[{\"schoolCity\":\"Xian\",\"schoolName\":\"xiaoxue\"},{\"schoolCity\":\"Xian\",\"schoolName\":\"zhongxue\"},{\"schoolCity\":\"Beijing\",\"schoolName\":\"daxue\"}],\"scoreData\":{\"Chinese\":96,\"English\":82,\"Math\":90},\"sex\":true}";
// 将json数据转为json文档
QJsonParseError result;
QJsonDocument rootDoc = QJsonDocument::fromJson(jsonData, &result);
if(rootDoc.isNull() || result.error != QJsonParseError::NoError){
qDebug() << "parse json data failed.";
return false;
}
// 获取根对象
QJsonObject rootObj = rootDoc.object();
// 修改数据
rootObj["name"] = "Jack";
// 修改数据对象
QJsonValue scoreDataValue = rootObj.value("scoreData");
QJsonObject scoreDataObj = scoreDataValue.toObject();
scoreDataObj["Chinese"] = 100;
rootObj["scoreData"] = scoreDataObj;
// 修改数组
QJsonValue techDataValue = rootObj.value("techData");
QJsonArray techDataArray = techDataValue.toArray();
for(int i = 0; i < techDataArray.size(); i++){
if(techDataArray.at(i).toString().compare("PYTHON") == 0){
techDataArray.replace(i, "GO");
break;
}
}
rootObj["techData"] = techDataArray;
// 修改数组对象
QJsonValue schoolDataValue = rootObj.value("schoolData");
QJsonArray schoolDataArray = schoolDataValue.toArray();
for(int i = 0; i < schoolDataArray.size(); i++){
QJsonObject obj = schoolDataArray.at(i).toObject();
if(obj.value("schoolName").toString().compare("xiaoxue") == 0){
obj["schoolCity"] = "Baoji";
schoolDataArray.replace(i, obj);
break;
}
}
rootObj["schoolData"] = schoolDataArray;
// 将json数据对象转为字符串
QJsonDocument document;
document.setObject(rootObj);
QByteArray byJsonData = document.toJson(QJsonDocument::Compact);
QString strJson(byJsonData);
{
"id":1002,
"name":"Tom",
"techData":["C++", "JAVA", "PYTHON"],
"schoolData":[
{"schoolCity":"Xian","schoolName":"xiaoxue"},
{"schoolCity":"Xian","schoolName":"zhongxue"},
{"schoolCity":"Beijing","schoolName":"daxue"}
],
"scoreData":{
"Chinese":96,
"English":82,
"Math":90
},
"sex":true
}
{
"class":5, // 新增项
"home":{ // 新增项
"father":52,
"mather":52
},
"id":1002,
"name":"Tom",
"schoolData":[
{"schoolCity":"Xian","schoolName":"xiaoxue"},
{"schoolCity":"Xian","schoolName":"zhongxue"},
{"schoolCity":"Beijing","schoolName":"daxue"},
{"schoolCity":"shanghai","schoolName":"boshi"} // 新增项
],
"scoreData":{
"Chinese":96,
"English":82,
"Math":90,
"Physics":100 // 新增项
},
"sex":true,
"techData":["C++","JAVA","PYTHON","GO"] //新增GO数据
}
QByteArray jsonData = "{\"id\":1002,\"name\":\"Tom\",\"techData\":[\"C++\",\"JAVA\",\"PYTHON\"], \"schoolData\":[{\"schoolCity\":\"Xian\",\"schoolName\":\"xiaoxue\"},{\"schoolCity\":\"Xian\",\"schoolName\":\"zhongxue\"},{\"schoolCity\":\"Beijing\",\"schoolName\":\"daxue\"}],\"scoreData\":{\"Chinese\":96,\"English\":82,\"Math\":90},\"sex\":true}";
QJsonParseError result;
QJsonDocument rootDoc = QJsonDocument::fromJson(jsonData, &result);
if(rootDoc.isNull() || result.error != QJsonParseError::NoError){
qDebug() << "parse json data failed.";
return false;
}
QJsonObject rootObj = rootDoc.object();
// 新增数据
rootObj.insert("class", 5);
// 新增数据对象
QJsonObject homeObject;
homeObject.insert("father", 52);
homeObject.insert("mather", 52);
rootObj.insert("home", homeObject);
// 在数据对象中新增数据
QJsonValue scoreDataValue = rootObj.value("scoreData");
QJsonObject scoreDataObj = scoreDataValue.toObject();
scoreDataObj.insert("Physics", 100);
rootObj["scoreData"] = scoreDataObj;
// 在数组中新增数据
QJsonValue techDataValue = rootObj.value("techData");
QJsonArray techDataArray = techDataValue.toArray();
techDataArray.append("GO");
rootObj["techData"] = techDataArray;
// 在数组对象中新增数据
QJsonValue schoolDataValue = rootObj.value("schoolData");
QJsonArray schoolDataArray = schoolDataValue.toArray();
QJsonObject doctorObj;
doctorObj.insert("schoolName", "boshi");
doctorObj.insert("schoolCity", "shanghai");
schoolDataArray.append(doctorObj);
rootObj["schoolData"] = schoolDataArray;
QJsonDocument document;
document.setObject(rootObj);
QByteArray byJsonData = document.toJson(QJsonDocument::Compact);
QString strJson(byJsonData);
{
"id":1002,
"name":"Tom", //此项删除
"techData":["C++","JAVA","PYTHON"], // PYTHON删除
"schoolData":[
{"schoolCity":"Xian","schoolName":"xiaoxue"}, // 此项删除
{"schoolCity":"Xian","schoolName":"zhongxue"},
{"schoolCity":"Beijing","schoolName":"daxue"}
],
"scoreData":{
"Chinese":96, //此项删除
"English":82,
"Math":90
},
"sex":true
}
{
"id":1002,
"techData":["C++","JAVA"],
"schoolData":[
{"schoolCity":"Xian","schoolName":"zhongxue"},
{"schoolCity":"Beijing","schoolName":"daxue"}
],
"scoreData":{
"English":82,
"Math":90
},
"sex":true
}
QByteArray jsonData = "{\"id\":1002,\"name\":\"Tom\",\"techData\":[\"C++\",\"JAVA\",\"PYTHON\"], \"schoolData\":[{\"schoolCity\":\"Xian\",\"schoolName\":\"xiaoxue\"},{\"schoolCity\":\"Xian\",\"schoolName\":\"zhongxue\"},{\"schoolCity\":\"Beijing\",\"schoolName\":\"daxue\"}],\"scoreData\":{\"Chinese\":96,\"English\":82,\"Math\":90},\"sex\":true}";
QJsonParseError result;
QJsonDocument rootDoc = QJsonDocument::fromJson(jsonData, &result);
if(rootDoc.isNull() || result.error != QJsonParseError::NoError){
qDebug() << "rootdoc is null";
return false;
}
QJsonObject rootObj = rootDoc.object();
// 删除数据
rootObj.remove("name");
// 删除数据对象中的数据
QJsonValue scoreDataValue = rootObj.value("scoreData");
QJsonObject scoreDataObj = scoreDataValue.toObject();
scoreDataObj.remove("Chinese");
rootObj["scoreData"] = scoreDataObj;
// 删除数组中的数据
QJsonValue techDataValue = rootObj.value("techData");
QJsonArray techDataArray = techDataValue.toArray();
for(int i = 0; i < techDataArray.size(); i++){
if(techDataArray.at(i).toString().compare("PYTHON") == 0){
techDataArray.removeAt(i);
break;
}
}
rootObj["techData"] = techDataArray;
// 删除数组对象中的数据
QJsonValue schoolDataValue = rootObj.value("schoolData");
QJsonArray schoolDataArray = schoolDataValue.toArray();
for(int i = 0; i < schoolDataArray.size(); i++){
QJsonObject obj = schoolDataArray.at(i).toObject();
if(obj.value("schoolName").toString().compare("xiaoxue") == 0){
schoolDataArray.removeAt(i);
break;
}
}
rootObj["schoolData"] = schoolDataArray;
QJsonDocument document;
document.setObject(rootObj);
QByteArray byJsonData = document.toJson(QJsonDocument::Compact);
QString strJson(byJsonData);