qt QJsonDocument QVariant

qt core模块自带的就有处理json的类,然后发现有个迭代器,注意的地方可能就是嵌套的array的地方可能要注意一下 QVariant的问题:

QJsonParseError json_error;
        //数据读入
        QJsonDocument parse_doucment = QJsonDocument::fromJson(byte_array, &json_error);
        if(json_error.error == QJsonParseError::NoError)
        {。。。。
}

然后用到的也就是

bool isArray() const
bool isEmpty() const
bool isNull() const
bool isObject() const

还有相对应的类似的toxxx的函数了,转化其实很方便

然后迭代器对于遍历数据大的时候还是有用的

for (QJsonObject::Iterator it = obj.begin();it != obj.end(); it++)
{
   QJsonValue value=it.value();//it.key()取关键字字串
   QJsonXXX XXX=value.toXXX();//转化成其它
}
最后如果有类似于数组中的数组子类的嵌套,需要转化成toArray().toVariantList()之后遍历list取值(VariantList就是一个list,定义好了元素类型而已)

那么拿到的VariantList.at(int)都是一个QVariant,这个类型可以用来存储很多的定义的类型,所以上述情况可能会自动转化成一个VariantList的类型。

转化可以通过调用toxxx来进行,也可以查cancover去看能否实现转化,qdebug显示一下能够很清楚的知道他现在具体存的是什么值。然后更具需要去处理。

要看好因为如果比如一个list你转成array,默认转不过去他会传过去一个空的值,所以下面的程序可能就拿不到,所以最好转之前做个判断。

不过单单就QVariant这个来说还是很好用的。、


然后反过来json的插入通过简单的insert就可以替换原来的值,如果没有插入新的值。tojson可选存储的格式。对了 然后取值take是会把这个对象值拿走的。at就不会。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值