当前位置:   article > 正文

qt学习:json数据文件读取写入_qt读写json文件

qt读写json文件

目录

什么是json

基本格式

例子  解析json文件数据到界面上

组合json数据文档对象


什么是json

json是一种轻量级的数据交互格式,简单来说,json就是一种在各个编程语言中流通的数据格式,负责不同编程语言中的数据传递和交互

基本格式

以键值对的形式存放

  • 键-----字符串
  • 值------基本数据类型,字符串,json对象,json数组

例如

  1. {
  2. “name":"xxx",
  3. "age":21
  4. }

例子  解析json文件数据到界面上

json文件

  1. {
  2. "error_code": 0,
  3. "reason": "Success",
  4. "result": {
  5. "data": [
  6. {
  7. "content": "有一天晚上我俩一起吃西瓜,老大把西瓜籽很整洁的吐在了一张纸上,\r\n过了几天,我从教室回但宿舍看到老大在磕瓜子,\r\n我就问他:老大,你什么时候买的瓜子?\r\n老大说:刚晒好,说着抓了一把要递给我……",
  8. "hashId": "bcc5fdc2fb6efc6db33fa242474f108a",
  9. "unixtime": 1418814837,
  10. "updatetime": "2014-12-17 19:13:57"
  11. },
  12. {
  13. "content": ""我女朋友气跑了"\r\n"怎么回事?严重吗?你怎么着她了?"\r\n"不严重,我只是很久没用了"",
  14. "hashId": "03a6095c18e1d6fe7e2c19b2a20d03d1",
  15. "unixtime": 1418814837,
  16. "updatetime": "2014-12-17 19:13:57"
  17. },
  18. {
  19. "content": "还说神马来一场说走就走的旅行,\r\n工作后就连一场说走就走的下班都不行。",
  20. "hashId": "10edf75c1e7d0933c91f0f39a28a2c84",
  21. "unixtime": 1418814837,
  22. "updatetime": "2014-12-17 19:13:57"
  23. },
  24. {
  25. "content": "高速路上堵车,路边葡萄地里有一哥们竟然在偷葡萄,心想太没素质了吧!\r\n不管了我也去,刚溜进葡萄地,那哥们竟问我干嘛,\r\n我撇了一眼反问道你干嘛呢?\r\n那哥们答道摘葡萄呢!\r\n我答道:我也摘葡萄呢!\r\n哥们郁闷了说我摘我家的你呢?\r\n我顿时脸红,哥你家葡萄咋卖呢?",
  26. "hashId": "bb572bb5b4844badb31012983f7324f5",
  27. "unixtime": 1418814837,
  28. "updatetime": "2014-12-17 19:13:57"
  29. },
  30. {
  31. "content": "和老婆在街边散步,我手上捏着一张已揉成一团的传单,\r\n走了好一会终于看到个垃圾桶,我赶紧跑过去想扔掉,\r\n没想到老婆从后边一把拉住我说:老公,那个肯定吃不得了,别捡。\r\n我一愣,发现垃圾桶顶盖上放着半个西瓜。",
  32. "hashId": "7ebccd3bbfaf24e010f9eb3ee68234bd",
  33. "unixtime": 1418814837,
  34. "updatetime": "2014-12-17 19:13:57"
  35. },
  36. {
  37. "content": "某考生考了个倒数第一,回到家被他爸一顿暴揍,\r\n来到学校老师让他谈谈落后的体会,\r\n学生:“我终于明白了“落后就要挨打”的道理。”",
  38. "hashId": "4aee2aa6a79c67682f605c4146a8eca4",
  39. "unixtime": 1418814837,
  40. "updatetime": "2014-12-17 19:13:57"
  41. },
  42. {
  43. "content": "很多人不喜欢朝九晚五的生活,然后开始创业。\r\n最终,他的生活变成了朝五晚九。",
  44. "hashId": "7b358c4b96cf4a8d82b85545ea8f9603",
  45. "unixtime": 1418814837,
  46. "updatetime": "2014-12-17 19:13:57"
  47. },
  48. {
  49. "content": "钱这个东西,真是害人精。\r\n小到人与人之间的矛盾,大到国家之间的战争,无不是为了钱。\r\n钱可以把人推上万众瞩目之颠,也可以使人瞬间变成阶下囚。\r\n可是,富人们却没认识到,当钱几辈子花不完时,\r\n挣再多已经没有意义,还不如早日尽点社会责任,\r\n捐助给需要的人,求得个平安幸福。\r\n看到这个的有钱人们呐,你们什么时侯能捐我点啊!",
  50. "hashId": "94e18075f8c9c8211dfed5f8d6a62983",
  51. "unixtime": 1418814837,
  52. "updatetime": "2014-12-17 19:13:57"
  53. },
  54. {
  55. "content": "看到一句很好的名言:我们无法拉伸生命的长度,但是我们可以拓展生命的宽度。\r\n我觉得这句话太有道理了!\r\n意思就是:虽然我们无法再长高了,但是我们还可以继续长胖。",
  56. "hashId": "fd8e364a4c70d46e77c1610879748a9a",
  57. "unixtime": 1418814837,
  58. "updatetime": "2014-12-17 19:13:57"
  59. },
  60. {
  61. "content": "女生口中所说的“理工男好萌好棒好想嫁!”,\r\n其实理工男是指“会修电脑、会设置手机、会安家用电器、\r\n会帮做PPT打EXCEL表PS修图、话少、高冷、专一、不和乱七八糟的女生来往、\r\n不爱打扮却又干净清爽、高高瘦瘦、手指纤长、戴黑框眼镜超好看的帅哥”。\r\n其实找个帅哥让他学电脑,再戴个眼镜就OK了。",
  62. "hashId": "5001c08a3cc8a281b15c467bc15a4911",
  63. "unixtime": 1418814837,
  64. "updatetime": "2014-12-17 19:13:57"
  65. }
  66. ]
  67. }
  68. }

加入头文件

  1. #include <QJsonDocument> //json文档类
  2. #include <QJsonObject> //json对象
  3. #include <QJsonArray> //json数组
  4. #include <QJsonValue> //json值
  5. #include <QFile>
  6. #include <QDebug>

代码

  1. //1打开文件
  2. QFile file("./ke.json");
  3. bool ret = file.open(QIODevice::ReadOnly);
  4. if(ret == false)
  5. {
  6. qDebug()<<"open error";
  7. }
  8. //2读取文件的内容
  9. QByteArray content = file.readAll();
  10. //3关闭文件
  11. file.close();
  12. //4将读取出来的普通文本内容 转换为 json文档对象
  13. //使用QJsonDocument::fromJson()将JSON文档从其基于文本的表示转换为QJsonDocument。
  14. QJsonDocument doc = QJsonDocument::fromJson(content);
  15. //5利用这个json文档对象 将其转换为 json对象
  16. QJsonObject object = doc.object();
  17. //6利用json对象中的接口,通过键 就能得到值
  18. //= object.value(键)
  19. //得到 键 "result" 的值 ,该值 是一个json对象
  20. QJsonObject resultObject = object.value("result").toObject();
  21. //7通过 键 "data" 得到 值 ,该值是一个json数组
  22. QJsonArray dataArray = resultObject.value("data").toArray();
  23. //8遍历数组中的每个元素,每个都是都是json对象
  24. for(int i=0; i<dataArray.size(); i++)
  25. {
  26. //每个元素都是一个json对象
  27. QJsonObject item = dataArray.at(i).toObject();
  28. //将每个对象中的键 "content" 所对应的值 获取出来
  29. QString content = item.value("content").toString();
  30. //添加到界面上
  31. ui->textBrowser->append(content);
  32. }

例子 组合json数据文档对象

  1. //1新建json对象{}
  2. QJsonObject object0;
  3. //2向json对象加入一个数据,{“aaa”:"111",“bbb”:1}
  4. object0.insert("aaa",QJsonValue("111"));
  5. object0.insert("bbb",QJsonValue(1));
  6. //3再新建两个相同数据的对象
  7. //{“ccc”:"222",“ddd”:2}
  8. QJsonObject object1;
  9. object1.insert("ccc",QJsonValue("222"));
  10. object1.insert("ddd",QJsonValue(2));
  11. //{“eee”:"222",“fff”:2}
  12. QJsonObject object2;
  13. object2.insert("eee",QJsonValue("333"));
  14. object2.insert("fff",QJsonValue(3));
  15. //4将三个对象放到数组里
  16. //[{“aaa”:"111",“bbb”:1},{“ccc”:"222",“ddd”:2},{“eee”:"222",“fff”:2}]
  17. //新建一个数组
  18. QJsonArray array;
  19. array.insert(0,object0);
  20. array.insert(1,object1);
  21. array.insert(2,object2);
  22. //5新建一个对象,存放数组
  23. //{“ggg”:[{“aaa”:"111",“bbb”:1},{“ccc”:"222",“ddd”:2},{“eee”:"222",“fff”:2}]}
  24. QJsonObject object;
  25. object.insert("ggg",QJsonValue(array));
  26. //6转换为json文件对象
  27. QJsonDocument doc(object);
  28. //7将json对象转换成普通的文本数据
  29. QByteArray content = doc.toJson();
  30. //8打开文件
  31. QFile file("./xxx.json");
  32. file.open(QIODevice::ReadWrite);
  33. //9写入文件
  34. file.write(content);
  35. //10关闭文件
  36. file.close();

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/595981
推荐阅读
相关标签
  

闽ICP备14008679号