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

官方网站建设合同建立微信群的步骤

官方网站建设合同,建立微信群的步骤,合肥房产网备案查询,如何对一个网站进行seo一、前言 我们前面OpenHarmony设备配网 文章中#xff0c;给大家提供的示例有使用cJSON解析和cJSON创建json数据的用法 那么有同学会提出疑问#xff0c;我难道只能用cJSON库#xff1f; 当然不是啊#xff0c;你也可以用 json-parser、parson、jansson 等等三方库 回到正题…一、前言 我们前面OpenHarmony设备配网 文章中给大家提供的示例有使用cJSON解析和cJSON创建json数据的用法 那么有同学会提出疑问我难道只能用cJSON库 当然不是啊你也可以用 json-parser、parson、jansson 等等三方库 回到正题我们如何在OpenHarmony中灵活熟练的使用cJSON库呢 如果对JSON本身就不懂的别急我们先带大家理解JSON然后再去深入学习cJSON库的使用。 二、JSON理解 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 JSON采用完全独立于语言的文本格式但是也使用了类似于C语言家族的习惯包括C, C, C#, Java, JavaScript, Perl, Python等 这些特性使JSON成为理想的数据交换语言。 我们可以在Be JSON中随便输入一个内容查看报错的提示 我们能看到期望的是如下格式的数据 字符串、数字Number、NULL、BOOL、Json对象、Json数组这些格式的数据 那么我们在JSON中常用的有(Json对象、Json数组) 2种数据格式 Json对象Json数组1、Json对象 Json对象使用的是 { } 来描述每个 Json 对象中都可以存储若干个元素每一个元素都对应一个键值对keyvalue 结构元素和元素之间使用逗号间隔 key必须是字符串value值类型可选如字符串、数字、Boolean、NULL、Json对象、Json数组 {count: 100,flag: true,paras: {Light: ON,Motor: OFF} }2、Json数组 Json数组使用的是 [ ] 来描述[ ]里面的元素和元素之间使用逗号间隔支持的数据类型字符串、数字、Boolean、NULL、Json对象、Json数组 // 整形 [996,2399,1999,6999] // 字符串 [张三, 李四, 王二, 麻子] // 混合使用 [111, 9.99, true, false, 交个朋友, null] // 数组嵌套数组使用用逗号分隔 [[张三, 李四, 王二, 麻子],[111, 9.99, true, false, 兄弟们支持了吗, null] ] // 数组嵌套对象 [{king: {child: [张三, 李四, 王二, 麻子]}},[111, 9.99, true, false, 你好陌生人, null] ]三、cJSON详解 有了上面的知识来看cJSON会发现其实也很简单没有那么难只需要知道对应方法的含义和如何使用它就能解决开发中遇到的问题了。 我们看cJSON数据结构如下 /* The cJSON structure: */ typedef struct cJSON {struct cJSON *next;struct cJSON *prev;struct cJSON *child;int type;char *valuestring;/* writing to valueint is DEPRECATED, use cJSON_SetNumberValue instead */int valueint;double valuedouble;char *string; } cJSON;char *string表示对象中的key int type用于描述数据元素的类型type一共定义了 7种 类型。 如果获取的类型是Number类型使用valueint 如果获取的类型是double类型使用valuedouble 如果获取的类型是string类型使用valuestring 我们可以通过如下方法去检查type类型 大家看一下源码中就是通过这种方式去判断type类型然后去获取最终的数据值的 CJSON_PUBLIC(char *) cJSON_GetStringValue(cJSON *item) {if (!cJSON_IsString(item)) {return NULL;}return item-valuestring; } ... CJSON_PUBLIC(double) cJSON_GetNumberValue(cJSON *item) {if (!cJSON_IsNumber(item)) {return NAN;}return item-valuedouble; }1、如何创建一个JSON对象 带着问题去看源码并寻找解决答案 // cJSON.h /* These calls create a cJSON item of the appropriate type. */ CJSON_PUBLIC(cJSON *) cJSON_CreateNull(void); CJSON_PUBLIC(cJSON *) cJSON_CreateTrue(void); CJSON_PUBLIC(cJSON *) cJSON_CreateFalse(void); CJSON_PUBLIC(cJSON *) cJSON_CreateBool(cJSON_bool boolean); CJSON_PUBLIC(cJSON *) cJSON_CreateNumber(double num); CJSON_PUBLIC(cJSON *) cJSON_CreateString(const char *string); /* raw json */ CJSON_PUBLIC(cJSON *) cJSON_CreateRaw(const char *raw); CJSON_PUBLIC(cJSON *) cJSON_CreateArray(void); CJSON_PUBLIC(cJSON *) cJSON_CreateObject(void);我们刚刚在上面介绍JSON的时候知道JSON可以是如下几种类型的 字符串、数字Number、NULL、BOOL、Json对象、Json数组 所以我们可以通过cJSON_Create... 来创建JSON对象。 那么创建完JSON对象之后如何添加键值对呢 // cJSON.h CJSON_PUBLIC(cJSON*) cJSON_AddNullToObject(cJSON * const object, const char * const name); CJSON_PUBLIC(cJSON*) cJSON_AddTrueToObject(cJSON * const object, const char * const name); CJSON_PUBLIC(cJSON*) cJSON_AddFalseToObject(cJSON * const object, const char * const name); CJSON_PUBLIC(cJSON*) cJSON_AddBoolToObject(cJSON * const object, const char * const name, const cJSON_bool boolean); CJSON_PUBLIC(cJSON*) cJSON_AddNumberToObject(cJSON * const object, const char * const name, const double number); CJSON_PUBLIC(cJSON*) cJSON_AddStringToObject(cJSON * const object, const char * const name, const char * const string); CJSON_PUBLIC(cJSON*) cJSON_AddRawToObject(cJSON * const object, const char * const name, const char * const raw); CJSON_PUBLIC(cJSON*) cJSON_AddObjectToObject(cJSON * const object, const char * const name); CJSON_PUBLIC(cJSON*) cJSON_AddArrayToObject(cJSON * const object, const char * const name);我们看下面这样的json应该如何使用cJSON? {pi: 3.141,happy: true,name: 头戴三叉束发紫金冠体挂西川红棉百花袍身披兽面吞头连环铠腰系勒甲玲珑狮蛮带手持方天画戟坐下嘶风赤兔马之吕小布是也 }使用方式 int main() {cJSON * root;// 创建根数据对象rootcJSON_CreateObject();// 添加键值对cJSON_AddBoolToObject(root,happy,true);cJSON_AddNumberToObject(root,pi,3.141);cJSON_AddNumberToObject(root,name,头戴三叉束发紫金冠体挂西川红棉百花袍身披兽面吞头连环铠腰系勒甲玲珑狮蛮带手持方天画戟坐下嘶风赤兔马之吕小布是也); // 将json形式转换成字符串char *out cJSON_Print(root);printf(%s\n,out);// 释放内存如果不删除会出现内存泄漏cJSON_Delete(root); free(out); }2、如何创建一个JSON数组 看完上面的内容我们应该知道应该用的是cJSON_CreateArray对吧。 假如我们有如下json内容 [111, 9.99, true, false, 交个朋友, null]使用方式 int main() {cJSON *root;root cJSON_CreateArray();cJSON_AddItemToArray(root, cJSON_CreateNumber(111)); cJSON_AddItemToArray(root, cJSON_CreateNumber(9.99)); cJSON_AddItemToArray(root, cJSON_CreateBool(true)); cJSON_AddItemToArray(root, cJSON_CreateBool(false)); cJSON_AddItemToArray(root, cJSON_CreateString(交个朋友));cJSON_AddItemToArray(root, cJSON_CreateNull());char *s cJSON_PrintUnformatted(root);if(s){printf( %s \n,s);free(s);}// 必须要删除否则会出现内存泄漏cJSON_Delete(root);return 0; }3、如何创建一个JSON对象嵌套数组 {test:[{name:雷布斯,motto:碉堡了友商是傻瓜}] }使用方式 int main() {cJSON *root, *body, *list;// json对象rootroot cJSON_CreateObject();// root 添加键值对test:json数组AcJSON_AddItemToObject(root,test, body cJSON_CreateArray());// json数组A添加Json对象BcJSON_AddItemToArray(body, list cJSON_CreateObject());// 在json对象B中添加键值对cJSON_AddStringToObject(list,name,雷布斯);// 在json对象B中添加键值对cJSON_AddNumberToObject(list,motto,碉堡了友商是傻瓜);char *s cJSON_PrintUnformatted(root);if(s){printf(%s \n,s);free(s);}if(root){// 必须要删除否则会出现内存泄漏cJSON_Delete(root); }return 0; }4、如何解析json? // cJSON.h CJSON_PUBLIC(cJSON *) cJSON_Parse(const char *value);将字符串转换为 cJSON 结构体 这里我们拿复杂的嵌套数据来讲解json对象嵌套数组如何解析呢 {list: [{day: 1,money: -1999999}, {day: 10,money: 1999999}] }我们看到最外层是一个JSONObject 然后通过 key: list 获取JSONArray JSONArray里面有2个JSONObject 然后通过 key: happy 、key: money 获取对应的值 int main() {char *s {\list\:[{\day\:1,\money\:-1999999},{\day\:10,\money\:1999999}]};cJSON *root cJSON_Parse(s);if(!root) {printf(cJSON_Parse失败 !\n);return -1;}cJSON *list cJSON_GetObjectItem(root, list);if(!list){printf(没有发现key为list的Item!\n);return -1;}// 这里我们需要获取数组的大小int array_size cJSON_GetArraySize(list);printf(数组大小%d\n,array_size);for(int i0; i array_size; i) {// 获取JSONArraycJSON* item cJSON_GetArrayItem(list, i);cJSON* day cJSON_GetObjectItem(item, day);printf(day is %d\n,day-valueint);cJSON* money cJSON_GetObjectItem(item, money);printf(money is %d\n,money-valueint);}if(root){// 删除JSON并释放内存cJSON_Delete(root);}return 0; }四、注意事项 刚刚上面我们介绍了如何通过cJSON库创建JSON以及如何解析JSON。 那么我们在cJSON解析数据的时候一定要做数据健全性检查。 例如我们刚写了下面2行代码 cJSON *recvJson cJSON_Parse(recvBuf); cJSON *testID cJSON_GetObjectItem(recvJson, test_id); ...我们这个时候能直接用testID吗 肯定不能我们需要检查一下它是否存在可增加如下代码进行判断 if(testID NULL || testID-type cJSON_NULL) { printf(JSON数据有问题\r\n); } else { // 这里做正常的业务处理... }这个时候可能有同学会疑问了cJSON里面没有方法判断吗 肯定有啊请使用 cJSON_HasObjectItem if(1 cJSON_HasObjectItem(json,test_id)) {// 这里做正常的业务处理 } else {printf(JSON数据有问题\r\n); }那么我们这个时候假设使用的是 testID-valuestring 获取内容需要判断是否和本地的一个字符串值 雷布斯 是否相等我们应该如何做呢 我们可以使用 strcmp 来比较2个数据值是否相等 if (strcmp(testIDValue, 雷布斯) 0) { // 这里判断2个数据值相等这个分支里面写我们的业务代码... }
http://www.hkea.cn/news/14561567/

相关文章:

  • wordpress站群插件c2c网站程序多少钱
  • 网站开发比较流行的框架浙江建筑公司排名前100
  • 网站是怎么做的吗漳州网站开发制作棋牌
  • 做哪个网站的人多济南建站免费模板
  • 多语种网站建设哪个视频网站做视频最赚钱
  • 网站备案 排名影响郑州网约车
  • 网站主机空间价格如何分析对手网站关键词
  • 寻亲网站开发设计文档梅州免费建站找哪家
  • 网站视频如何保存京津冀协同发展英文
  • 初中生电脑作业做网站黄骅做网站|黄骅网站|黄骅百度优化|黄骅百度推广|黄骅微信|黄骅
  • 京东商城的网站建设蓝白清爽企业通用wordpress模板
  • 在网站上卖东西怎么做minty wordpress
  • 网站开发引用思源黑体山西电商网站开发
  • 微信小程序网站制作大数据开发过程
  • 企业网站设计布局便宜的seo网站优化排名
  • 不备案网站怎么做推广seo文章排名优化
  • 网站管理系统 免费正规接单赚佣金的平台
  • 怎么给网站做404可以做网站的app
  • 公司的网站是什么wordpress无法发送注册邮件
  • 金富通青岛建设工程有限公司网站阿里云网站
  • 上海建设银行网站转账记录网络设计师培训平台
  • 网站建设兆金手指下拉描述网站开发的过程
  • 如何查询网站域名过期咸宁做网站的公司
  • 房地产 网站 案例万年县建设银行网站拼音全称
  • 福建响应式网站制作做网站首页文字排版技巧
  • c 网站开发入门视频教程长沙建站官网
  • 网站建设如何推广哈尔滨网站建设30t
  • 权威的徐州网站建设游戏推广怎么拉人最快
  • 甘孜建设网站哪些网站图片做海报好
  • 厚街建设网站山东网站制作推荐