qt QJsonDocument QVariant

来源:互联网 发布:scala编程思想 下载 编辑:程序博客网 时间:2024/05/21 18:37

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就不会。

0 0
原创粉丝点击