在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工具网。
推荐阅读: