qt5 解析Json文件
来源:互联网 发布:qq空间推广软件 编辑:程序博客网 时间:2024/05/17 23:22
/* test.json */{ "appDesc": { "description": "SomeDescription", "message": "SomeMessage" }, "appName": { "description": "Home", "message": "Welcome", "imp":["awesome","best","good"] }}void readJson() { QString val; QFile file; file.setFileName("test.json"); file.open(QIODevice::ReadOnly | QIODevice::Text); val = file.readAll(); file.close(); qWarning() << val; QJsonDocument d = QJsonDocument::fromJson(val.toUtf8()); QJsonObject sett2 = d.object(); QJsonValue value = sett2.value(QString("appName")); qWarning() << value; QJsonObject item = value.toObject(); qWarning() << tr("QJsonObject of description: ") << item; /* incase of string value get value and convert into string*/ qWarning() << tr("QJsonObject[appName] of description: ") << item["description"]; QJsonValue subobj = item["description"]; qWarning() << subobj.toString(); /* incase of array get array and convert into string*/ qWarning() << tr("QJsonObject[appName] of value: ") << item["imp"]; QJsonArray test = item["imp"].toArray(); qWarning() << test[1].toString(); }
http://stackoverflow.com/questions/15893040/how-to-create-read-write-json-files-in-qt5
摘于上面的链接,大部分已经能用了。
我来说下其他情况:
{"file":"book.png","frames":{"v1":{"x":1,"y":91,"w":68,"h":87,"offX":0,"offY":0,"sourceW":68,"sourceH":87},"v2":{"x":1,"y":1,"w":68,"h":88,"offX":0,"offY":0,"sourceW":68,"sourceH":88},"v3":{"x":209,"y":1,"w":66,"h":87,"offX":0,"offY":0,"sourceW":66,"sourceH":87},"v4":{"x":71,"y":1,"w":67,"h":88,"offX":0,"offY":0,"sourceW":67,"sourceH":88},"v5":{"x":71,"y":91,"w":67,"h":88,"offX":0,"offY":0,"sourceW":67,"sourceH":88},"v6":{"x":140,"y":1,"w":67,"h":87,"offX":0,"offY":0,"sourceW":67,"sourceH":87},"v7":{"x":140,"y":90,"w":67,"h":87,"offX":0,"offY":0,"sourceW":67,"sourceH":87}}}
像这样的json,想要得到frames里所有的内容,因为它不是一个数组,所以要用迭代器来访问,类似这样的代码:
bool MainWindow::parseJsonFile(){ QString val; QFile file; file.setFileName("test.json"); file.open(QIODevice::ReadOnly | QIODevice::Text); val = file.readAll(); file.close(); qWarning() << val; QJsonDocument d = QJsonDocument::fromJson(val.toUtf8()); QJsonObject rootObject = d.object(); QJsonValue pngNameJsonValue = rootObject.value(QString("file")); qWarning() << pngNameJsonValue.toString(); QJsonValue framesJsonValue = rootObject.value(QString("frames")); qWarning() << framesJsonValue; QStringList imgNameList = framesJsonValue.toObject().keys(); QJsonObject frameObject = framesJsonValue.toObject(); int index = 0; for(auto beginItr = frameObject.begin(); beginItr != frameObject.end(); ++beginItr){ QJsonValue eachImageJsonValue = *beginItr; QJsonObject eachImageJsonObject = eachImageJsonValue.toObject(); //eachImageJsonObject["x"], eachImageJsonObject["y"] ... } return true;}
还有QJsonValue里用.keys()得到所有的key,然后就可以通过["key"] 来访问了。
http://www.waitingfy.com/archives/1775
1 0
- qt5 解析Json文件
- Qt5.0解析JSON
- QT开发(六十二)———QT5解析Json文件
- Qt5中JSON与XML的解析
- QT5(13) JSON生成与解析
- Qt5中JSON的生成与解析
- Qt5 json文件"读"与"写"
- JSON库解析json文件
- Json解析本地json文件
- Qt5的widget项目文件解析
- JSon文件解析
- ajax解析json文件
- 转:解析json文件
- JSon文件解析
- Json文件解析
- 解析本地json文件
- java解析json文件
- JSon文件解析
- AngularJs ToolTips实现
- J2EE入门—浅谈J2EE的十三个规范
- n皇后问题
- Hive ORC文件格式存储与测试(Malformed ORC file解决)
- 抽象类与接口的区别
- qt5 解析Json文件
- USART---串口发送数据
- unity--ugui中文教程翻译2
- 【Html】caption标签,为表格添加标题和摘要
- IP地址
- zookeeper+hadoop+hbase 之 hbase
- IP Address
- HDU 5592:ZYB's Premutation 树状数组+二分
- 算法笔记——【分治法】分治法与二分搜索