当前位置: 首页 > news >正文

海宁市住房与建设规划局网站谭木记网页制作教程

海宁市住房与建设规划局网站,谭木记网页制作教程,html视频播放器代码,广州物流最新情况引言 nlohman json GitHub - nlohmann/json: JSON for Modern C 是一个为现代C#xff08;C11#xff09;设计的JSON解析库#xff0c;主要特点是 易于集成#xff0c;仅需一个头文件#xff0c;无需安装依赖 易于使用#xff0c;可以和STL无缝对接#xff0c;使用体验…引言 nlohman json GitHub - nlohmann/json: JSON for Modern C 是一个为现代CC11设计的JSON解析库主要特点是 易于集成仅需一个头文件无需安装依赖 易于使用可以和STL无缝对接使用体验近似python中的json 常见用法 1. json初始化 1.1 从文件初始化 std::ifstream in_file(test.json); nlohmann::json doc; if (!in_file.is_open()) {exit(1); } in_file doc; in_file.close();1.2 从字符串初始化 方式1 nlohmann::json doc R({key1:value1, key2:[1,2,3]})_json; // nlohmann::json doc {\key1\:\value1\, \key2\:[1,2,3]}_json; // 此种情况下需要对json字符串中的双引号进行转义R表示json字符串中的特殊字符均按照字符本身进行解析而不需要进行转义如双引号、反斜杠等字符 以 _json结尾表示其是一个json对象 方式2 std::string info R({key1:value1, key2:[1,2,3]}); nlohmann::json doc nlohmann::json::parse(info);调用json::parse方法通过传入一个字符串进行构造此时不以 _json结尾 1.3 直接构造json对象 方式1 // {key1:value1,key2:[1,2,3],key3:{key:val}} nlohmann::json doc {{key1, value1}, {key2, {1,2,3}}, {key3, {{key, val}}}};最外层的花括号表示一个json object 里面的每一对花括号的第一个元素为key第二个元素为value用’,分割 注意单对花括号包裹的是array两对花括号包裹的才是json object如 {1, 2}是一个array即[1, 2] {{1, 2}}是一个object即{1:2}key为1value为2 方式2 // {app:wechat,array:[1,2,4],obj:{age:15,name:zs,sex:m}} nlohmann::json doc; doc[app] wechat; // 添加一个k-v若key存在则覆盖value doc[array] {1,2,3}; // 添加一个数组 doc[array].emplace_back(4); // 数组添加一个元素 doc[array].erase(2); // 删除下标为2的元素 doc[obj] {{name, zs}, {age, 15}}; // 添加一个object doc[obj].push_back({sex, m}); // 通过push方法添加一个k-v若key存在则忽略不会覆盖value doc.push_back({app, qq}); // key存在故忽略2. json访问 json展开如下 {retCode: 0,retMSg: 成功,data: [{name: 李雷,id: 001,score: {Chinese: 80,Math: 95},schoolInfo: [{School_name: 清华},{School_name: 北大}]},{name: 韩梅梅,id: 002,score: {Chinese: 90,Math: 80},schoolInfo: [{School_name: 清华},{School_name: 北大}]}] }循环遍历 std::string info R({retCode:0,retMSg:成功,data:[{name:李雷,id:001,score:{Chinese:80,Math:95},schoolInfo:[{School_name:清华},{School_name:北大}]},{name:韩梅梅,id:002,score:{Chinese:90,Math:80},schoolInfo:[{School_name:清华},{School_name:北大}]}]}); try {nlohmann::json doc nlohmann::json::parse(info); } catch (std::expection e){// json转化失败会抛出异常如json格式错误等std::cout e.what() std::endl; } // 循环遍历 for (auto item : doc.items()) {const std::string key item.key();auto value item.value(); // 用引用减少拷贝if (value.is_number()) {auto val value.getint(); // 推导为int如果是浮点型转化为int则只保留整数部分// int val value; // 强转为int型// auto val value.getuint32_t();// auto val value.getdouble();} else if (value.is_string()) {const std::string str value;// std::string str value;} else if (value.is_array()) { // value是一个数组int len value.size();for (int i 0; i len; i) {if (value[i].is_object()) {;} else if (value[i].is_string()) {;}}} else if (value.is_object()) { // value是一个jsonfor(auto item_2 : value.items()) {; // 类似处理}} else if (value.is_boolean()) {bool b value; // 或者直接用value进行传参他会隐式转换为bool型} }指定key遍历 std::string info R({retCode:0,retMSg:成功,data:[{name:李雷,id:001,score:{Chinese:80,Math:95},schoolInfo:[{School_name:清华},{School_name:北大}]},{name:韩梅梅,id:002,score:{Chinese:90,Math:80},schoolInfo:[{School_name:清华},{School_name:北大}]}]}); nlohmann::json doc nlohmann::json::parse(info); if (doc.contains(retCode) doc[retCode].is_number()) {int retCode doc[retCode]; } if (doc.contains(data) doc[data].is_array()) {nlohmann::json doc_arr doc[data];int len doc_arr.size(); } else if (doc.contains(data) doc[data].is_object()) {nlohmann::json doc_json doc[data]; }访问key的几种方式 // 1. 直接通过key访问 std::string retMsg doc[retMSg]; // key不存在会出core(所以要判断key是否存在)类型转换失败也会core // 2. 通过at方法访问 std::string retMsg doc.at(retMSg); // 同上不同点在于at方法可以抛出异常如果key不存在两种方式正常情况下返回的结果都是nlohmann::json对象并且可以隐式转化为string以及各种基本类型 为了避免上述可能出现的问题直接访问key对应的value时尽量按如下方式编写程序 先判断key是否存在contains 再判断key的类型key类型相关的判断方法如下 方法含义is_number是否为数字int、uint32_t、uint64_t、double等is_boolean是否为boolis_string是否为字符串is_array是否为数组is_object是否为json 当然也可以通过捕获异常的方式来达到避免程序出错的目的注意由于doc[“retMSg”]这种访问方式不能抛出异常应该使用doc.at(“retMSg”)这种方式来访问。 3. json序列化 json序列化就是将json对象序列化成json格式的字符串或者存储到文本文件 序列化为json字符串 string str doc.dump();保存为json文件 nlohmann::json doc;doc[app] wechat; doc[age] 17;std::ofstream out_file(test.json); out_file doc;
http://www.pierceye.com/news/922894/

相关文章:

  • 百度推广官方网站登录入口一个人制作网站
  • 重庆市建设公共资源交易中心网站首页当地人做导游的旅游网站
  • 北京网站建设收费龙溪网站制作
  • 佛山小企业网站建设郑州做网站销售怎么样
  • 招考网站开发如何创建一个自己的网页
  • 做网站一般链接什么数据库wordpress 504错误
  • 网站阵地建设江门网站建设工作
  • 汽车网站建设策划方案24小时永久有效在线观看
  • 潍坊做网页的公司潍坊网站排名优化
  • 中建铁路建设有限公司网站微信群营销工具
  • 单位网站建设意见建议百度关键词检测工具
  • 重庆网站建设方案书免费网上咨询医生是哪个网
  • 临沂市开发区可以做分销的网站网络域名综合查询
  • 建设银行企业网银网站过期银州手机网站建设
  • 导航网站 win8风格企业服务官网
  • 樟树有哪几个网站做爆药库在线制作图片视频生成器
  • 汕头网站定制青年汇网站开发公司
  • 厦门专业网站设计公司防控措施持续优化
  • wordpress子网站杭州化工网站建设
  • 怎样做网站 - 百度兰州家政公司
  • 网站上的字体大小福建省建设注册执业管理中心网站
  • 七台河做网站手机wap浏览器
  • 最新手机网站推荐哪个推广平台效果好
  • 百度官方网站关键词营销seo
  • 网站建设开发流程做网站的毕业设计
  • 网站模块wordpress图片多选
  • 济源市住房和城乡建设局网站公示聊城市城乡建设部网站查询
  • 阿里网 网站备案流程长春公司网站建设
  • 临沂做商城网站设计网站设计 线框图 怎么画
  • 台江网站建设建设网站的意义