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

关于公司网站改版通知网页素材大宝库

关于公司网站改版通知,网页素材大宝库,佛山seo关键词,网站建设神器cJSON cJSON是一个使用C语言编写的JSON数据解析器#xff0c;具有超轻便#xff0c;可移植#xff0c;单文件的特点#xff0c;使用MIT开源协议。 cJSON项目托管在Github上#xff0c;仓库地址如下#xff1a; https://github.com/DaveGamble/cJSON 使用Git命令将其拉…cJSON cJSON是一个使用C语言编写的JSON数据解析器具有超轻便可移植单文件的特点使用MIT开源协议。 cJSON项目托管在Github上仓库地址如下 https://github.com/DaveGamble/cJSON 使用Git命令将其拉取到本地 git clone https://github.com/DaveGamble/cJSON.git 1 从Github拉取cJSON源码后文件非常多但是其中cJSON的源码文件只有两个 cJSON.h cJSON.c 使用的时候只需要将这两个文件复制到工程目录然后包含头文件cJSON.h即可如下 #include cJSON.h 1 2. cJSON数据结构和设计思想 cJSON的设计思想从其数据结构上就能反映出来。 cJSON使用cJSON结构体来表示一个JSON数据定义在cJSON.h中源码如下 /* The cJSON structure: */ typedef struct cJSON {     /* next/prev allow you to walk array/object chains. Alternatively, use GetArraySize/GetArrayItem/GetObjectItem */     struct cJSON *next;     struct cJSON *prev;     /* An array or object item will have a child pointer pointing to a chain of the items in the array/object. */     struct cJSON *child; /* The type of the item, as above. */     int type; /* The items string, if typecJSON_String  and type cJSON_Raw */     char *valuestring;     /* writing to valueint is DEPRECATED, use cJSON_SetNumberValue instead */     int valueint;     /* The items number, if typecJSON_Number */     double valuedouble; /* The items name string, if this item is the child of, or is in the list of subitems of an object. */     char *string; } cJSON; cJSON的设计很巧妙。 首先它不是将一整段JSON数据抽象出来而是将其中的一条JSON数据抽象出来也就是一个键值对用上面的结构体 strcut cJSON 来表示其中用来存放值的成员列表如下 String用于表示该键值对的名称 type用于表示该键值对中值的类型 valuestring如果键值类型(type)是字符串则将该指针指向键值 valueint如果键值类型(type)是整数则将该指针指向键值 valuedouble如果键值类型(type)是浮点数则将该指针指向键值 其次一段完整的JSON数据中由很多键值对组成并且涉及到键值对的查找、删除、添加所以使用链表来存储整段JSON数据如上面的代码所示 next指针指向下一个键值对 prev指针指向上一个键值对 最后因为JSON数据支持嵌套所以一个键值对的值会是一个新的JSON数据对象一条新的链表也有可能是一个数组方便起见在cJSON中数组也表示为一个数组对象用链表存储所以 在键值对结构体中当该键值对的值是一个嵌套的JSON数据或者一个数组时由child指针指向该条新链表。 3. JSON数据封装 封装方法 封装JSON数据的过程其实就是创建链表和向链表中添加节点的过程。 首先来讲述一下链表中的一些术语 头指针指向链表头结点的指针 头结点不存放有效数据方便链表操作 首节点第一个存放有效数据的节点 尾节点最后一个存放有效数据的节点 明白了这几个概念之后我们开始讲述创建一段完整的JSON数据即如何创建一条完整的链表。 ① 创建头指针  cJSON* cjson_test NULL; 1 ② 创建头结点并将头指针指向头结点 cjson_test cJSON_CreateObject(); 1 ③ 尽情的向链表中添加节点 cJSON_AddNullToObject(cJSON * const object, const char * const name); cJSON_AddTrueToObject(cJSON * const object, const char * const name); cJSON_AddFalseToObject(cJSON * const object, const char * const name); cJSON_AddBoolToObject(cJSON * const object, const char * const name, const cJSON_bool boolean); cJSON_AddNumberToObject(cJSON * const object, const char * const name, const double number); cJSON_AddStringToObject(cJSON * const object, const char * const name, const char * const string); cJSON_AddRawToObject(cJSON * const object, const char * const name, const char * const raw); cJSON_AddObjectToObject(cJSON * const object, const char * const name); cJSON_AddArrayToObject(cJSON * const object, const char * const name); 输出JSON数据 上面讲述一段完整的JSON数据就是一条长长的链表那么如何打印出这段JSON数据呢 cJSON提供了一个API可以将整条链表中存放的JSON信息输出到一个字符串中 (char *) cJSON_Print(const cJSON *item); 1 使用的时候只需要接收该函数返回的指针地址即可。 封装数据和打印数据示例 单纯的讲述方法还不够下面用一个例子来说明封装出开头给出的那段JSON数据 #include stdio.h #include cJSON.h int main(void) {     cJSON* cjson_test NULL;     cJSON* cjson_address NULL;     cJSON* cjson_skill NULL;     char* str NULL; /* 创建一个JSON数据对象(链表头结点) */     cjson_test cJSON_CreateObject(); /* 添加一条字符串类型的JSON数据(添加一个链表节点) */     cJSON_AddStringToObject(cjson_test, name, mculover666); /* 添加一条整数类型的JSON数据(添加一个链表节点) */     cJSON_AddNumberToObject(cjson_test, age, 22); /* 添加一条浮点类型的JSON数据(添加一个链表节点) */     cJSON_AddNumberToObject(cjson_test, weight, 55.5); /* 添加一个嵌套的JSON数据添加一个链表节点 */     cjson_address cJSON_CreateObject();     cJSON_AddStringToObject(cjson_address, country, China);     cJSON_AddNumberToObject(cjson_address, zip-code, 111111);     cJSON_AddItemToObject(cjson_test, address, cjson_address); /* 添加一个数组类型的JSON数据(添加一个链表节点) */     cjson_skill cJSON_CreateArray();     cJSON_AddItemToArray(cjson_skill, cJSON_CreateString( C ));     cJSON_AddItemToArray(cjson_skill, cJSON_CreateString( Java ));     cJSON_AddItemToArray(cjson_skill, cJSON_CreateString( Python ));     cJSON_AddItemToObject(cjson_test, skill, cjson_skill); /* 添加一个值为 False 的布尔类型的JSON数据(添加一个链表节点) */     cJSON_AddFalseToObject(cjson_test, student); /* 打印JSON对象(整条链表)的所有数据 */     str cJSON_Print(cjson_test);     printf(%s\n, str); return 0; } 编译运行 gcc cJSON.c example1.c -o example1.exe
http://www.hkea.cn/news/14458345/

相关文章:

  • 肇庆 网站建设 域联中国菲律宾足球历史战绩
  • 做网站按页面收费wordpress安装主题出错
  • 上海工信部网站wordpress常用标签
  • 网站建设合同下载第三方平台网站的建设规划
  • 萧山中兴建设有限公司网站网络营销案例视频
  • jsp做的网站代码物流网
  • 站长工具查询个人养老保险金
  • 安徽旅游在线网站建设app网站建设需要什么
  • 今天开始做女神免费网站wordpress怎么恢复到原来版本
  • 网站设计审美角度互联网推广公司是做什么的
  • 企业建设网站找网站公司吗wordpress添加缩略图
  • 长沙市建网站做家装的设计公司网站
  • 网站建设论文基础摘要百度云资源搜索引擎
  • windows网站建设教程视频宣传册设计样本
  • 不花钱自己可以做网站吗最牛餐饮营销手段
  • 产品展示网站模板网站短片怎么做
  • 昆山专业网站建设公司杭州seo建站
  • 网站建设用素材好用的推广平台
  • 网站建设的方法有哪些成都知名建筑公司排名
  • 濮阳建设企业网站公司代做网站排名
  • 外汇平台网站建设苏州中设建设集团有限公司网站
  • 沈阳网站建设费用广东新闻联播直播在线观看
  • 电商网站建设推荐制作简历哪个网站好
  • 东莞公司网站价格短网址生成源码下载
  • 网站开发外文文献个人域名备案网站名称
  • 绍兴seo整站优化建大型门户网站
  • 建网站需要多少钱2017一个商城
  • 湛江企业网站建设流程网站建设颜色代码
  • 福建建设信息网站监理企业招聘百度网站大全旧版
  • 带导航栏的网站连接品硕网线做怎么弹网站