第一种:简单对象的值
这是最简单的获取对象内的值,通过键查找到对应的值以后在进行转换字符串
{
"name": "1",
"id": " connect"
}
解析代码:
QJsonParseError err_rpt;//用于判断是否出错
QJsonDocument root_Doc = QJsonDocument::fromJson(data, &err_rpt);//字符串格式化为JSON
if(root_Doc.isObject())
{
//根据键打印对应的值
qDebug()<<root_Doc.object().value("name").toString();
qDebug()<<root_Doc.object().value("id").toString();
}
else
qDebug()<<err_rpt.errorString();//出错时打印错误信息
第二种:数组内包含多种类型值
这种主要就是需要根据数组内不同的数据类型来转换;如下面的json数组中是包含了一个字符串和一个整数以及一个bool类型的数据
[
"name",
21,
true
]
解析代码:
QJsonParseError err_rpt;//用于判断是否出错
QJsonDocument root_Doc = QJsonDocument::fromJson(data, &err_rpt);//字符串格式化为JSON
if(root_Doc.isArray())
{
QJsonArray array = root_Doc.array();
for (int i=0; i<array.size();i++ ) {
if(array.at(i).type()==QJsonValue::String)
{
qDebug()<<array.at(i).toString();
}
if(array.at(i).type()==QJsonValue::Double)
{
qDebug()<<array.at(i).toDouble();
}
if(array.at(i).type()==QJsonValue::Bool)
{
qDebug()<<array.at(i).toBool();
}
}
}
else
qDebug()<<err_rpt.errorString();//出错时打印错误信息
第三种:数组内包含键值对与多个对象
数组内包含键值对与多个json对象的,并且对象内包含其他json对象;这种需要先获取到数组的大小进行遍历
[
{
"name": "zhangsan",
"info": {
"age": "18",
"sex": "man"
}
},
{
"name": "lisi",
"info": {
"age": "21",
"sex": "woman"
}
}
]
解析代码:
QJsonParseError err_rpt;//用于判断是否出错
QJsonDocument root_Doc = QJsonDocument::fromJson(data, &err_rpt);//字符串格式化为JSON
if(root_Doc.isArray())
{
QJsonArray array = root_Doc.array(); // 转数组
int nSize = array.size(); //获取json数组大小
for (int i = 0; i < nSize; ++i)//循环遍历json数组内的所有键值对
{
//打印数组内对象的第一个键为“name”的值
qDebug() << array.at(i).toObject().value("name").toString();
//遍历info对象内的值,查找对应的键获取值进行输出
QJsonObject jsonObject = array.at(i).toObject().value("info").toObject();
qDebug() << "age : " << jsonObject.value("age").toString();
qDebug() << "sex : " << jsonObject.value("sex").toString();
qDebug()<<"***********************************";
}
}
else
qDebug()<<err_rpt.errorString();//出错时打印错误信息
第四种:对象中包含数组
这种与上面的差不多,不过这种是在对象中包含数组的;需要先转为object对象再对数组进行操作
{
"name": "lisi",
"age": 18,
"grade": [
{
"name": "English",
"score": 80
},
{
"name": "Math",
"score": 90
},
{
"name": "Chinese",
"score": 100
}
]
}
解析代码:
QJsonParseError err_rpt;//用于判断是否出错
QJsonDocument root_Doc = QJsonDocument::fromJson(data, &err_rpt);//字符串格式化为JSON
if(root_Doc.isObject())
{
qDebug()<<root_Doc.object().value("name").toString();
qDebug()<<root_Doc.object().value("age").toInt();
QJsonArray array = root_Doc.object().value("grade").toArray();
for(int i=0;i<array.size();i++)
{
qDebug()<< array.at(i).toObject().value("name").toString();
qDebug()<< array.at(i).toObject().value("score").toInt();
}
}
else
qDebug()<<err_rpt.errorString();//出错时打印错误信息