一、Qt解析JSON数据
//JSON数据 { "name":"Alice", "age":18, "hobby":["reading","painting"] } //Qt代码 QJsonDocument jsonDoc = QJsonDocument::fromJson(jsonData); if(jsonDoc.isNull() || !jsonDoc.isObject()) { qDebug()<<"JSON数据格式错误"; return; } QJsonObject jsonObj = jsonDoc.object(); QString name = jsonObj.value("name").toString(); int age = jsonObj.value("age").toInt(); QJsonArray hobbyArr = jsonObj.value("hobby").toArray(); foreach(QJsonValue val , hobbyArr) { QString hobby = val.toString(); qDebug()<以上代码通过Qt解析一段JSON数据,并从中获取名字、年龄和爱好信息,并输出到控制台上。
二、Qt解析JSONObject无输出
//JSON数据 { "name":"Alice", "info":{ "age":18, "hobby":["reading","painting"] } } //Qt代码 QJsonDocument jsonDoc = QJsonDocument::fromJson(jsonData); if(jsonDoc.isNull() || !jsonDoc.isObject()) { qDebug()<<"JSON数据格式错误"; return; } QJsonObject jsonObj = jsonDoc.object(); QString name = jsonObj.value("name").toString(); QJsonObject infoObj = jsonObj.value("info").toObject(); int age = infoObj.value("age").toInt(); QJsonArray hobbyArr = infoObj.value("hobby").toArray(); foreach(QJsonValue val , hobbyArr) { QString hobby = val.toString(); qDebug()<以上代码通过Qt解析一个包含JSONObject的JSON数据。如果jsonObj.value("info")没有转成一个对象,则原因是JSON数据格式的问题或者转换过程出现异常导致的。
三、Qt解析JSON文件
//JSON数据,保存在example.json文件中 { "name":"Alice", "age":18, "hobby":["reading","painting"] } //Qt代码 QFile file("example.json"); if(!file.open(QIODevice::ReadOnly)) { qDebug()<<"打开文件失败"; return; } QByteArray jsonData = file.readAll(); file.close(); QJsonDocument jsonDoc = QJsonDocument::fromJson(jsonData); if(jsonDoc.isNull() || !jsonDoc.isObject()) { qDebug()<<"JSON数据格式错误"; return; } QJsonObject jsonObj = jsonDoc.object(); QString name = jsonObj.value("name").toString(); int age = jsonObj.value("age").toInt(); QJsonArray hobbyArr = jsonObj.value("hobby").toArray(); foreach(QJsonValue val , hobbyArr) { QString hobby = val.toString(); qDebug()<以上代码通过Qt解析example.json文件中的JSON数据,并从中获取名字、年龄和爱好信息,并输出到控制台上。
四、Qt解析JSONArray
//JSON数据 ["reading","painting"] //Qt代码 QJsonDocument jsonDoc = QJsonDocument::fromJson(jsonData); if(jsonDoc.isNull() || !jsonDoc.isArray()) { qDebug()<<"JSON数据格式错误"; return; } QJsonArray hobbyArr = jsonDoc.array(); foreach(QJsonValue val , hobbyArr) { QString hobby = val.toString(); qDebug()<以上代码通过Qt解析一个JSONArray,并输出其中的数据到控制台。
五、Qt解析JSON字符串
//JSON字符串 QString strJson = "{\"name\":\"Alice\",\"age\":18,\"hobby\":[\"reading\",\"painting\"]}"; //Qt代码 QJsonDocument jsonDoc = QJsonDocument::fromJson(strJson.toUtf8()); if(jsonDoc.isNull() || !jsonDoc.isObject()) { qDebug()<<"JSON数据格式错误"; return; } QJsonObject jsonObj = jsonDoc.object(); QString name = jsonObj.value("name").toString(); int age = jsonObj.value("age").toInt(); QJsonArray hobbyArr = jsonObj.value("hobby").toArray(); foreach(QJsonValue val , hobbyArr) { QString hobby = val.toString(); qDebug()<以上代码通过Qt解析一个JSON字符串,并从中获取名字、年龄和爱好信息,并输出到控制台上。
六、Qt解析JSON没有输出
//JSON数据 { "name":"Alice", "score": { "Math": 90, "English": 80 }, "hobby":["reading","painting"] } //Qt代码 QJsonDocument jsonDoc = QJsonDocument::fromJson(jsonData); if(jsonDoc.isNull() || !jsonDoc.isObject()) { qDebug()<<"JSON数据格式错误"; return; } QJsonObject jsonObj = jsonDoc.object(); QString name = jsonObj.value("name").toString(); qDebug()<以上代码通过Qt解析一个包含嵌套JSONObject的JSON数据,如果没有值输出,那么原因有二:jsonObj.value("score")没有转成一个对象、JSON数据格式的问题。
七、Qt解析JSONList
在Qt中解析JSONList需要首先引入第三方库QJsonArray,下面是对JSONList的解析示例。
//JSON数据 [ { "name":"Alice", "age":18 }, { "name":"Bob", "age":22 } ] //Qt代码 QJsonDocument jsonDoc = QJsonDocument::fromJson(jsonData); if(jsonDoc.isNull() || !jsonDoc.isArray()) { qDebug()<<"JSON数据格式错误"; return; } QJsonArray jsonArray = jsonDoc.array(); foreach(QJsonValue val , jsonArray) { QJsonObject jsonObj = val.toObject(); QString name = jsonObj.value("name").toString(); int age = jsonObj.value("age").toInt(); qDebug()<< 八、Qt解析JSONArray需要三方库吗
Qt自带的QJsonDocument、QJsonObject、QJsonArray类可以解析任何合法的JSON数据,不需要引入其他第三方库。
九、Qt解析JSONObject输出为空
//JSON数据 { "name":"Alice", "score": { "Math": 90, "English": 80 }, "hobby":["reading","painting"] } //Qt代码 QJsonDocument jsonDoc = QJsonDocument::fromJson(jsonData); if(jsonDoc.isNull() || !jsonDoc.isObject()) { qDebug()<<"JSON数据格式错误"; return; } QJsonObject jsonObj = jsonDoc.object(); QString name = jsonObj.value("name").toString(); qDebug()<如果JSON对象中某一个值为null或者值类型不匹配,则原因可能是JSON数据格式的问题或者转换过程中出现异常导致的。