Qjson的⼏种常见解析格式
第⼀种:简单对象的值
这是最简单的获取对象内的值,通过键查到对应的值以后在进⾏转换字符串
{
"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()<<String();//出错时打印错误信息
第⼆种:数组内包含多种类型值
这种主要就是需要根据数组内不同的数据类型来转换;如下⾯的json数组中是包含了⼀个字符串和⼀个整数以及⼀个bool类型的数据
[
"name",
21,
true
]
解析代码:
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()<<String();//出错时打印错误信息
第三种:数组内包含键值对与多个对象
数组内包含键值对与多个json对象的,并且对象内包含其他json对象;这种需要先获取到数组的⼤⼩进⾏遍历
[
{
"name":"zhangsan",
"info":{
"age":"18",
"sex":"man"
}
},
{
"name":"lisi",
"info":{
"age":"21",
"sex":"woman"
}
}
]
解析代码:
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()<<String();//出错时打印错误信息
第四种:对象中包含数组
这种与上⾯的差不多,不过这种是在对象中包含数组的;需要先转为object对象再对数组进⾏操作
{
"name":"lisi",
"age":18,
parse error怎么解决
"grade":[
{
"name":"English",
"score":80
},
{
"name":"Math",
"score":90
},
{
"name":"Chinese",
"score":100
}
]
}
解析代码:
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()<<String();//出错时打印错误信息

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。