qtjson支持的数据类型有哪些?qt怎么解析数组?

阳光 2021-06-30 14:31:39 java常见问答 7528

在Qt库中,为JSON的相关操作提供了完整的类支持,有了这些数据类型的支持,使得开发人员的工作更加高效,那qtjson支持的数据类型有哪些?下面来我们就来给大家讲解一下。

qtjson支持的数据类型包括QJsonValue,QJsonObject,QJsonArray,QJsonDocument和QJsonParseError。其中,QJsonValue类表示json格式中的一个值;QJsonObject表示一个json对象;QJsonArray顾名思义表示一个json数组;QJsonDocument主要用来读写json文档;而QJsonParseError是用来表示json解析过程中出现的错误的方便类。

qt怎么解析数组?

JSON 数组在中括号中书写,以逗号分隔。JSON 中数组值必须是合法的 JSON 数据类型(字符串, 数字, 对象, 数组, 布尔值或 null)。

比如:

[
    
    {
        "id": "1"
        , "name": "aa"
},
    
    {
        "id": "2"
        , "name": "bb"
}
    
]

Qt解析方式:

QByteArray array = "[{\"name\": \"aa\",\"age\": \"20\"},{\"name\": \"bb\",\"age\": \"25\"}]";
QJsonParseError error;
QJsonDocument document = QJsonDocument::fromJson(array, & error);
if (error.error != QJsonParseError::NoError)
{
    qInfo() << "parse json error" << error.errorstring(); < p = "" >
        return;
}
if (document.isNull() || document.isEmpty())
{
    qInfo() << "parse json null or empty";
    return;
}
QVariantList list = document.toVariant()
    .toList();
for (int i = 0; i < list.count(); p = ""
    i++) <= "" >
{
    QVariantMap map = list[i].toMap();
    qInfo() << map["name"].tostring(); < p = "" >
    qInfo() << map["age"].tostring(); < p = "" >
}

Json对象取值方法:

1.数据格式

{
    "data": [
    {
        "username": "xxx"
        , "avatar": "xxx"
        , "gift_name": "xxx"
    }
    , {
        "username": "xxx"
        , "avatar": "xxx"
        , "gift_name": "xxx"
    }
    , {
        "username": "xxx"
        , "avatar": "xxx"
        , "gift_name": "xxx"
    }
    , {
        "username": "xxx"
        , "avatar": "xxx"
        , "gift_name": "xxx"
    }
    , {
        "username": "xxx"
        , "avatar": "xxx"
        , "gift_name": "xxx"
    }]
}

2.取值

username data[0].username
avatar data[0].avatar

3.vue接口请求后

this.getPrizeUser()
    .then(ret =>
    {
        setInterval((i => (() =>
        {
            if (i > ret.data.length) i = 0;
            this.$refs.danmu.render(ret.data[i].avatar, ret.data[i].username, ‘获得了‘, ret.data[i].gift_name, 1000);
            i++;
        }))(0), 11000);
    })
    .catch(err =>
    {
        this.$toast.fail("系统开小差,请重试");
    });

JSON是一种轻量级的数据交换格式,让json进行解析取值,可以更加方便人们的阅读与编写哦!最后大家如果想要了解更多json相关知识,敬请关注奇Q工具网。

推荐阅读:

fastjson和gson区别是什么?fastjson和gson区别极介绍

json的格式是什么?json格式的优缺点有哪些?

java如何写两个线程?实现多线程的方式