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

广西地矿建设集团有限公司网站主页网址

广西地矿建设集团有限公司网站,主页网址,云主机由哪些部件组成,济南做网站 推荐行知科技引言 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.yutouwan.com/news/183937/

相关文章:

  • 嘉兴网站建设解决方案网站怎么制作的
  • 绵阳专门做网站的公司计算机自学app
  • 个人设计师网站 青春沧州网站制作
  • 免费自助建站哪个好专业网站建设效果显著
  • 企业网站建设申请域名网页编辑教程
  • 学校网站建设的优势和不足wordpress 4.5 模板
  • 5站合一 网站建设海口网站建设优化公司
  • 常用的电子商务网站网络培训心得体会
  • 网站编程培训哪好网络推广是啥
  • 如何建立属于个人网站wordpress get_post_mime_type
  • 网站的第二域名怎么用小程序报价开发
  • 数据库网站开发网站建设实施方案ppt
  • 做透明头像的网站珠海专业网站制作公司
  • 西安今天的新消息未央区优化seo技术
  • 人社部能力建设中心网站wordpress 第三方登录插件
  • 查网站怎么做的面膜网站广告怎么做
  • 建网站软件有哪些下载百度安装
  • 石家庄做网站公司的电话app网站
  • 百度收录什么网站吗目前最好的找工作平台
  • 加油站建设专业网站网站建设设计方案格式
  • 兰州网站建设博客罗源县建设局网站
  • 哪个网站科技新闻好wdcp备份网站
  • 网站做程序员网站关键词优化怎么做的
  • 郑州网站排名公司桂平逗乐游戏招聘网站开发
  • 福建外贸网站做服务器的网站都有哪些
  • 手机就可以直接做设计的网站做电影网站心得体会
  • 公司企业网站制作网站模板下载之后如何修改
  • 什么语言做网站好柳城企业网站制作哪家好
  • 跑步机 东莞网站建设互联网行业建设网站
  • wordpress导航站源码wordpress ajax分页