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

广东东信润建设有限公司网站wordpress 获取指定分类

广东东信润建设有限公司网站,wordpress 获取指定分类,九江市建设项目服务中心,专业做域名的网站一、前言 我们前面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/14422758/

相关文章:

  • 南宁市企业网站建设马鞍山 网站建设 有限公司
  • 镇江网站设计公司报价wordpress最大上传2g
  • 个人域名可以建公司网站吗网站开发区
  • 怎么在国税网站上做实名认证吗天台高端网站建设公司
  • 手机网站尺寸大小杭州网站怎么做seo
  • 什么网站 是cms系统下载地址石家庄高铁招聘信息网
  • 如何做国际网站产品宣传伊利网站建设评价
  • 护肤品网站制作 网新科技手机宣传网站
  • 河南建设部网站有什么免费ppt模板网站
  • phpcms做网站学工网站建设
  • 刷赞网站推广免费软件wpml wordpress
  • 响应式网站建设定制qq网页空间
  • 简单模板网站制作时间开发一个软件能卖多少钱
  • 龙岗网站建设哪家好旅游分销平台有哪些
  • 深圳哪里有网站建设手表网站 源码
  • 制作网页的三大技术是什么搜素引擎排名优化技术
  • 郑州网络营销网站如何把网站做好
  • 深圳网站优化提供商中国新冠疫苗接种率
  • 网站风格代码全能医院网站管理系统
  • 鹿岛建设 网站百度收录网站名
  • 网站空间域名一次性收费还是一年一算唯品会信息科技有限公司
  • 卖友情链接的哪来那么多网站贵州住房和城乡建设厅旧网站
  • 找人做网站去哪里找重庆网站建设选夹夹虫
  • 贵州省住房和城乡建设厅官网站郑州知名做网站公司有哪些
  • 计算机网络技术网站开发深圳 网站设计公司
  • 为什么我的网站做不起来宁波营销型网站建设首选
  • 深圳龙华建网站房产官网
  • 济南建站软件成都百度推广代理公司
  • 网站开发常用的前端框架个人可以做电视台网站吗
  • 音乐相册制作网站为什么计算机鄙视软工