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

网站换新域名装修设计网站排行

网站换新域名,装修设计网站排行,佛山seo管理,为什么招聘网站不能用自己做的简历目录 引言 一.JSON简介 二. Jsoncpp库概述 三. Jsoncpp核心类介绍 3.1 Json::Value类 3.2 序列化与反序列化类 四. 实现序列化 五. 实现反序列化 结语 引言 在现代软件开发中#xff0c;数据交换格式扮演着至关重要的角色。JSON#xff08;JavaScript Object Notati…目录 引言 一.JSON简介 二. Jsoncpp库概述 三. Jsoncpp核心类介绍 3.1 Json::Value类 3.2 序列化与反序列化类 四. 实现序列化 五. 实现反序列化 结语 引言 在现代软件开发中数据交换格式扮演着至关重要的角色。JSONJavaScript Object Notation以其简洁、易于阅读和支持多种数据类型的特点成为了数据交换领域的明星。本文将深入探讨JSON的基本概念、数据类型以及如何使用Jsoncpp库实现JSON的序列化与反序列化。 一.JSON简介 JSON是一种轻量级的数据交换格式它基于文本易于人阅读和编写同时也易于机器解析和生成。JSON的数据结构包括以下几种 对象由花括号{}包围存储键值对。数组由中括号[]包围存储有序集合。字符串由双引号包围。数字整数或浮点数。布尔值true或false。null表示空值。 例⼩明同学的学⽣信息 char name ⼩明; int age 18; float score[3] {88.5, 99, 58}; 则json这种数据交换格式是将这多种数据对象组织成为⼀个字符串 [{姓名 : ⼩明,年龄 : 18,成绩 : [88.5, 99, 58]},{姓名 : ⼩⿊,年龄 : 18,成绩 : [88.5, 99, 58]} ] 二. Jsoncpp库概述 Jsoncpp是一个流行的C库用于处理JSON数据。它提供了序列化和反序列化的机制使得在C程序中生成和解析JSON数据变得简单。 三. Jsoncpp核心类介绍 // Json数据对象类 class Json::Value {Value operator(const Value other); // Value重载了[]和因此所有的赋值和获取数据都可以通过Value operator[](const std::string key); // 简单的⽅式完成 val[姓名] ⼩明 ;Value operator[](const char *key);Value removeMember(const char *key); // 移除元素const Value operator[](ArrayIndex index) const; // val[成绩][0]Value append(const Value value); // 添加数组元素val[绩].append(88);ArrayIndex size() const; // 获取数组元素个数 val[绩].size();std::string asString() const; // 转string string name val[name].asString();const char *asCString() const; // 转char* char *name val[name].asCString();Int asInt() const; // 转int int age val[age].asInt();float asFloat() const; // 转floatbool asBool() const; // 转 bool }; // json序列化类低版本⽤这个更简单 class JSON_API Writer {virtual std::string write(const Value root) 0; } class JSON_API FastWriter : public Writer {virtual std::string write(const Value root); } class JSON_API StyledWriter : public Writer {virtual std::string write(const Value root); } // json序列化类⾼版本推荐如果⽤低版本的接⼝可能会有警告 class JSON_API StreamWriter {virtual int write(Value const root, std::ostream *sout) 0; } class JSON_API StreamWriterBuilder : public StreamWriter::Factory {virtual StreamWriter *newStreamWriter() const; } // json反序列化类低版本⽤起来更简单 class JSON_API Reader {bool parse(const std::string document, Value root, bool collectComments true); } // json反序列化类⾼版本更推荐 class JSON_API CharReader {virtual bool parse(char const *beginDoc, char const *endDoc,Value *root, std::string *errs) 0; } class JSON_API CharReaderBuilder : public CharReader::Factory {virtual CharReader *newCharReader() const; } 3.1 Json::Value类 Json::Value类是Jsoncpp中表示JSON数据的核心类。它提供了一系列的方法来操作JSON数据 operator[]通过键名或数组索引访问数据。asString、asInt、asFloat、asBool将JSON数据转换为相应的C数据类型。append向JSON数组中添加元素。 3.2 序列化与反序列化类 序列化是将JSON对象转换为字符串的过程反序列化则是相反的过程。Jsoncpp提供了以下类来实现这些功能 StreamWriter和StreamWriterBuilder用于创建序列化器将Json::Value对象转换为JSON格式的字符串。CharReader和CharReaderBuilder用于创建反序列化器将JSON格式的字符串解析为Json::Value对象。 四. 实现序列化 下面是一个使用Jsoncpp实现序列化的示例 #include jsoncpp/json/json.h #include iostream #include sstream #include memoryint main() {const char* name 小明;int age 19;float score[] {77.5, 88, 99.5};Json::Value val;val[姓名] name;val[年龄] age;val[成绩] Json::Value(Json::arrayValue);for (float s : score) {val[成绩].append(s);}Json::StreamWriterBuilder swb;std::unique_ptrJson::StreamWriter sw(swb.newStreamWriter());std::stringstream ss;// 检查sw是否为空指针if (!sw) {std::cerr Failed to create StreamWriter std::endl;return -1;}try {int result sw-write(val, ss);if (result ! 0) { // 检查是否有错误std::cerr Write failed with error code: result std::endl;} else {std::cout ss.str() std::endl;}} catch (const std::exception e) {std::cerr Exception occurred: e.what() std::endl;return -1;}return 0; } 五. 实现反序列化 下面是一个使用Jsoncpp实现反序列化的示例 #include jsoncpp/json/json.h #include iostream #include stringint main() {std::string str R({姓名:小明, 年龄:18, 成绩:[76.5, 55, 88]});Json::Value root;Json::CharReaderBuilder crb;std::unique_ptrJson::CharReader cr(crb.newCharReader());std::string err;if (!cr-parse(str.c_str(), str.c_str() str.size(), root, err)){std::cout Parse error: err std::endl;}else{std::cout Name: root[姓名].asString() std::endl;std::cout Age: root[年龄].asInt() std::endl;int sz root[成绩].size();for (int i 0; i sz; i){std::cout Score: root[成绩][i].asFloat() std::endl;}}return 0; } 结语 JSON作为一种灵活的数据交换格式结合Jsoncpp库为C开发者提供了强大的数据交换能力。无论是网络通信还是数据存储JSON和Jsoncpp都是你的理想选择。通过本文的介绍希望你能对JSON和Jsoncpp有一个全面的了解并能将其应用到实际开发中。
http://www.hkea.cn/news/14371251/

相关文章:

  • 做电商讲师课程的网站wordpress子目录无法访问后台
  • 丰台区网站建设公司最早做网页的公司
  • 人和做网站如何制作微信公众号文章
  • 如何做企业的网站陕西专业网站建设哪家好
  • 中国商标注册网官方网站地方门户网站系统建设方案
  • 福永外贸网站建设黄页88网站推广怎么样
  • 企业网站建设比较调查怎么写吕梁建站公司
  • 推荐一个做照片书的网站国内著名平面设计师的个人网站
  • 企业发展历程网站wordpress文章多个分类显示不出来
  • 免费个人网站怎么做服装公司网站
  • thinkphp做双语网站wordpress 下载插件xydown
  • 下载浙江平安建设信息系统网站深圳龙岗做网站的
  • 手机网站开发要多久wordpress 修改权限
  • 如何做一个个人网站求几个夸克没封的a站2023
  • 装修公司设计图网站推广如何指定关键词优化
  • 上海公司黄页网站增城专业建站公司
  • 网站建设世纪明珠互联网上网络营销的推广
  • 可以做软件的网站有哪些上海市企业信用信息公示系统官网
  • 泉州建站公司模板哔哩哔哩网站电子商务建设
  • 全国网站开发大型网站 jquery
  • 企业网站管理系统有哪些学编程的好处
  • 百度网站上做推广受骗做广告推广哪个平台好
  • 2017年网站建设高职考f卷济宁恒德建设有限公司网站
  • 优秀网站推荐wordpress展示页面
  • 网站建设小白到精通需要比较好看的wordpress主题
  • 网站月流量是什么意思怎样开始学做自媒体
  • 怀化市建设局门户网站企业网站建设文档
  • 分析竞争对手网站做网站 最好的开源cms
  • 合肥装修公司哪家口碑最好网站优化时间
  • 网站备案 固话郑州人才网