您的位置:

Qt解析JSON

一、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数据格式的问题或者转换过程中出现异常导致的。

Qt解析JSON

2023-05-19
core解析json的笔记(c json解析)

本文目录一览: 1、如何解析json中map数据 2、fasterxml.jackson.core.jsonparser.feature是哪个jar包的 3、spring mvc 怎么获取json 4

2023-12-08
java方法整理笔记(java总结)

2022-11-08
Qt手册的全面解析

2023-05-22
包含qt写一个json文件的词条

2022-11-25
python基础学习整理笔记,Python课堂笔记

2022-11-21
印象笔记记录java学习(Java成长笔记)

2022-11-12
java学习笔记(java初学笔记)

2022-11-14
java客户端学习笔记(java开发笔记)

2022-11-14
cjson解析和(cjson解析数组)

本文目录一览: 1、cjson数组如何解析 2、怎么用C语言获取JSON中的数据? 3、这种json怎么解析?[ "1", "2", "3", "4" ] 4、请教Qt如何解析出Json的数据 cjs

2023-12-08
重学java笔记,java笔记总结

2022-11-23
jsoncpp源码包含,jsoncpp解析json

2022-11-22
java包笔记,Java语言包

2022-11-18
数据库的笔记mysql,数据库管理系统笔记

2022-11-24
cjson汉字解析,cj的汉字

2022-11-24
java笔记,大学java笔记

2022-11-28
cjson创建json串(cjson生成json)

本文目录一览: 1、怎么用 C/C++ 把结构体数组转成 JSON串 2、python中cj什么意思 3、java怎么实现JSON打包UDP 4、请教Qt如何解析出Json的数据 5、怎么用C语言获取

2023-12-08
java基础知识学习笔记一,Java基础笔记

2022-11-21
java笔记,尚硅谷java笔记

2022-12-01
我的python笔记06(Python)

2022-11-14