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

网上购物网站建设的实训报告建设厅网站的秘钥怎么买

网上购物网站建设的实训报告,建设厅网站的秘钥怎么买,网站怎么优化 优帮云,廊坊网站推广json简介 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 易于人阅读和编写。同时也易于机器解析和生成。 它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集#xff0c;最新的定义可以参考ECMA-404_2nd_ed…json简介 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 易于人阅读和编写。同时也易于机器解析和生成。 它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集最新的定义可以参考ECMA-404_2nd_edition_The JSON Data Interchange Syntax这份标准只有16页可以一次性读完。 JSON具有以下这些形式 对象是一个无序的“‘名称/值’对”集合。一个对象以 {左括号\{_{左括号}{左括号​ 开始 }右括号\}_{右括号}}右括号​ 结束。每个“名称”后跟一个 :冒号:_{冒号}:冒号​ “‘名称/值’ 对”之间使用 ,逗号,_{逗号},逗号​ 分隔。数组是值value的有序集合。一个数组以 [左中括号[_{左中括号}[左中括号​ 开始 ]右中括号]_{右中括号}]右中括号​ 结束。值之间使用 ,逗号 分隔。值value可以是双引号括起来的字符串string、数值(number)、true、false、 null、对象object或者数组array。这些结构可以嵌套。字符串string是由双引号包围的任意数量Unicode字符的集合使用反斜线转义。一个字符character即一个单独的字符串character string。数值number也与C或者Java的数值非常相似。除去未曾使用的八进制与十六进制格式。除去一些编码细节。空白可以加入到任何符号之间。 一个典型的json结构如下所示 {FirstName: John,LastName: Doe,Age: 43,Address: {Street: Downing Street 10,City: London,Country: Great Britain},Phone numbers: [44 1234567,44 2345678]}具体可以参考jason官网http://www.json.org/json-zh.html CJSON CJSON是一个基于C语言实现的json库为了兼容更多的平台使用ANSI C (C89)标准来编写其项目地址在http://github.com/DaveGamble/cJSON。 如何在项目中使用CJSON 有两种方式 使用链接库的方式先编译成库之后在项目中使用直接将CJSON的源代码cJSON.h和cJSON.c加到项目中之后和项目一起编译 CJSON提供的接口 CJSON提供的接口都在cJSON.h中声明出来了以CJSON_PUBLIC的宏开头还有一些直接是宏 /* returns the version of cJSON as a string */ CJSON_PUBLIC(const char*) cJSON_Version(void);/* Supply malloc, realloc and free functions to cJSON */ CJSON_PUBLIC(void) cJSON_InitHooks(cJSON_Hooks* hooks);/* Memory Management: the caller is always responsible to free the results from all variants of cJSON_Parse (with cJSON_Delete) and cJSON_Print (with stdlib free, cJSON_Hooks.free_fn, or cJSON_free as appropriate). The exception is cJSON_PrintPreallocated, where the caller has full responsibility of the buffer. */ /* Supply a block of JSON, and this returns a cJSON object you can interrogate. */ CJSON_PUBLIC(cJSON *) cJSON_Parse(const char *value); CJSON_PUBLIC(cJSON *) cJSON_ParseWithLength(const char *value, size_t buffer_length); /* ParseWithOpts allows you to require (and check) that the JSON is null terminated, and to retrieve the pointer to the final byte parsed. */ /* If you supply a ptr in return_parse_end and parsing fails, then return_parse_end will contain a pointer to the error so will match cJSON_GetErrorPtr(). */ CJSON_PUBLIC(cJSON *) cJSON_ParseWithOpts(const char *value, const char **return_parse_end, cJSON_bool require_null_terminated); CJSON_PUBLIC(cJSON *) cJSON_ParseWithLengthOpts(const char *value, size_t buffer_length, const char **return_parse_end, cJSON_bool require_null_terminated);/* Render a cJSON entity to text for transfer/storage. */ CJSON_PUBLIC(char *) cJSON_Print(const cJSON *item); /* Render a cJSON entity to text for transfer/storage without any formatting. */ CJSON_PUBLIC(char *) cJSON_PrintUnformatted(const cJSON *item); /* Render a cJSON entity to text using a buffered strategy. prebuffer is a guess at the final size. guessing well reduces reallocation. fmt0 gives unformatted, 1 gives formatted */ CJSON_PUBLIC(char *) cJSON_PrintBuffered(const cJSON *item, int prebuffer, cJSON_bool fmt); /* Render a cJSON entity to text using a buffer already allocated in memory with given length. Returns 1 on success and 0 on failure. */ /* NOTE: cJSON is not always 100% accurate in estimating how much memory it will use, so to be safe allocate 5 bytes more than you actually need */ CJSON_PUBLIC(cJSON_bool) cJSON_PrintPreallocated(cJSON *item, char *buffer, const int length, const cJSON_bool format); /* Delete a cJSON entity and all subentities. */ CJSON_PUBLIC(void) cJSON_Delete(cJSON *item);/* Returns the number of items in an array (or object). */ CJSON_PUBLIC(int) cJSON_GetArraySize(const cJSON *array); /* Retrieve item number index from array array. Returns NULL if unsuccessful. */ CJSON_PUBLIC(cJSON *) cJSON_GetArrayItem(const cJSON *array, int index); /* Get item string from object. Case insensitive. */ CJSON_PUBLIC(cJSON *) cJSON_GetObjectItem(const cJSON * const object, const char * const string); CJSON_PUBLIC(cJSON *) cJSON_GetObjectItemCaseSensitive(const cJSON * const object, const char * const string); CJSON_PUBLIC(cJSON_bool) cJSON_HasObjectItem(const cJSON *object, const char *string); /* For analysing failed parses. This returns a pointer to the parse error. Youll probably need to look a few chars back to make sense of it. Defined when cJSON_Parse() returns 0. 0 when cJSON_Parse() succeeds. */ CJSON_PUBLIC(const char *) cJSON_GetErrorPtr(void);/* Check item type and return its value */ CJSON_PUBLIC(char *) cJSON_GetStringValue(const cJSON * const item); CJSON_PUBLIC(double) cJSON_GetNumberValue(const cJSON * const item);/* These functions check the type of an item */ CJSON_PUBLIC(cJSON_bool) cJSON_IsInvalid(const cJSON * const item); CJSON_PUBLIC(cJSON_bool) cJSON_IsFalse(const cJSON * const item); CJSON_PUBLIC(cJSON_bool) cJSON_IsTrue(const cJSON * const item); CJSON_PUBLIC(cJSON_bool) cJSON_IsBool(const cJSON * const item); CJSON_PUBLIC(cJSON_bool) cJSON_IsNull(const cJSON * const item); CJSON_PUBLIC(cJSON_bool) cJSON_IsNumber(const cJSON * const item); CJSON_PUBLIC(cJSON_bool) cJSON_IsString(const cJSON * const item); CJSON_PUBLIC(cJSON_bool) cJSON_IsArray(const cJSON * const item); CJSON_PUBLIC(cJSON_bool) cJSON_IsObject(const cJSON * const item); CJSON_PUBLIC(cJSON_bool) cJSON_IsRaw(const cJSON * const item);/* 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);/* Create a string where valuestring references a string so* it will not be freed by cJSON_Delete */ CJSON_PUBLIC(cJSON *) cJSON_CreateStringReference(const char *string); /* Create an object/array that only references its elements so* they will not be freed by cJSON_Delete */ CJSON_PUBLIC(cJSON *) cJSON_CreateObjectReference(const cJSON *child); CJSON_PUBLIC(cJSON *) cJSON_CreateArrayReference(const cJSON *child);/* These utilities create an Array of count items.* The parameter count cannot be greater than the number of elements in the number array, otherwise array access will be out of bounds.*/ CJSON_PUBLIC(cJSON *) cJSON_CreateIntArray(const int *numbers, int count); CJSON_PUBLIC(cJSON *) cJSON_CreateFloatArray(const float *numbers, int count); CJSON_PUBLIC(cJSON *) cJSON_CreateDoubleArray(const double *numbers, int count); CJSON_PUBLIC(cJSON *) cJSON_CreateStringArray(const char *const *strings, int count);/* Append item to the specified array/object. */ CJSON_PUBLIC(cJSON_bool) cJSON_AddItemToArray(cJSON *array, cJSON *item); CJSON_PUBLIC(cJSON_bool) cJSON_AddItemToObject(cJSON *object, const char *string, cJSON *item); /* Use this when string is definitely const (i.e. a literal, or as good as), and will definitely survive the cJSON object.* WARNING: When this function was used, make sure to always check that (item-type cJSON_StringIsConst) is zero before* writing to item-string */ CJSON_PUBLIC(cJSON_bool) cJSON_AddItemToObjectCS(cJSON *object, const char *string, cJSON *item); /* Append reference to item to the specified array/object. Use this when you want to add an existing cJSON to a new cJSON, but dont want to corrupt your existing cJSON. */ CJSON_PUBLIC(cJSON_bool) cJSON_AddItemReferenceToArray(cJSON *array, cJSON *item); CJSON_PUBLIC(cJSON_bool) cJSON_AddItemReferenceToObject(cJSON *object, const char *string, cJSON *item);/* Remove/Detach items from Arrays/Objects. */ CJSON_PUBLIC(cJSON *) cJSON_DetachItemViaPointer(cJSON *parent, cJSON * const item); CJSON_PUBLIC(cJSON *) cJSON_DetachItemFromArray(cJSON *array, int which); CJSON_PUBLIC(void) cJSON_DeleteItemFromArray(cJSON *array, int which); CJSON_PUBLIC(cJSON *) cJSON_DetachItemFromObject(cJSON *object, const char *string); CJSON_PUBLIC(cJSON *) cJSON_DetachItemFromObjectCaseSensitive(cJSON *object, const char *string); CJSON_PUBLIC(void) cJSON_DeleteItemFromObject(cJSON *object, const char *string); CJSON_PUBLIC(void) cJSON_DeleteItemFromObjectCaseSensitive(cJSON *object, const char *string);/* Update array items. */ CJSON_PUBLIC(cJSON_bool) cJSON_InsertItemInArray(cJSON *array, int which, cJSON *newitem); /* Shifts pre-existing items to the right. */ CJSON_PUBLIC(cJSON_bool) cJSON_ReplaceItemViaPointer(cJSON * const parent, cJSON * const item, cJSON * replacement); CJSON_PUBLIC(cJSON_bool) cJSON_ReplaceItemInArray(cJSON *array, int which, cJSON *newitem); CJSON_PUBLIC(cJSON_bool) cJSON_ReplaceItemInObject(cJSON *object,const char *string,cJSON *newitem); CJSON_PUBLIC(cJSON_bool) cJSON_ReplaceItemInObjectCaseSensitive(cJSON *object,const char *string,cJSON *newitem);/* Duplicate a cJSON item */ CJSON_PUBLIC(cJSON *) cJSON_Duplicate(const cJSON *item, cJSON_bool recurse); /* Duplicate will create a new, identical cJSON item to the one you pass, in new memory that will* need to be released. With recurse!0, it will duplicate any children connected to the item.* The item-next and -prev pointers are always zero on return from Duplicate. */ /* Recursively compare two cJSON items for equality. If either a or b is NULL or invalid, they will be considered unequal.* case_sensitive determines if object keys are treated case sensitive (1) or case insensitive (0) */ CJSON_PUBLIC(cJSON_bool) cJSON_Compare(const cJSON * const a, const cJSON * const b, const cJSON_bool case_sensitive);/* Minify a strings, remove blank characters(such as , \t, \r, \n) from strings.* The input pointer json cannot point to a read-only address area, such as a string constant, * but should point to a readable and writable address area. */ CJSON_PUBLIC(void) cJSON_Minify(char *json);/* Helper functions for creating and adding items to an object at the same time.* They return the added item or NULL on failure. */ 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);/* When assigning an integer value, it needs to be propagated to valuedouble too. */ #define cJSON_SetIntValue(object, number) ((object) ? (object)-valueint (object)-valuedouble (number) : (number)) /* helper for the cJSON_SetNumberValue macro */ CJSON_PUBLIC(double) cJSON_SetNumberHelper(cJSON *object, double number); #define cJSON_SetNumberValue(object, number) ((object ! NULL) ? cJSON_SetNumberHelper(object, (double)number) : (number)) /* Change the valuestring of a cJSON_String object, only takes effect when type of object is cJSON_String */ CJSON_PUBLIC(char*) cJSON_SetValuestring(cJSON *object, const char *valuestring);/* If the object is not a boolean type this does nothing and returns cJSON_Invalid else it returns the new type*/ #define cJSON_SetBoolValue(object, boolValue) ( \(object ! NULL ((object)-type (cJSON_False|cJSON_True))) ? \(object)-type((object)-type (~(cJSON_False|cJSON_True)))|((boolValue)?cJSON_True:cJSON_False) : \cJSON_Invalid\ )/* Macro for iterating over an array or object */ #define cJSON_ArrayForEach(element, array) for(element (array ! NULL) ? (array)-child : NULL; element ! NULL; element element-next)/* malloc/free objects using the malloc/free functions that have been set with cJSON_InitHooks */ CJSON_PUBLIC(void *) cJSON_malloc(size_t size); CJSON_PUBLIC(void) cJSON_free(void *object);CJSON数据结构 CJSON核心数据结构就只有一个 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;可以看出json是一个嵌套数据结构这与json的定义所表达的思想一致。 CJSON使用实例 /*** file simple-cjson.c* author your name (youdomain.com)* brief * version 0.1* date 2023-02-19* * copyright Copyright (c) 2023* */ #include ../cJSON.h #include stdio.hchar simple_json[] {\\FirstName\: \John\,\\LastName\: \Doe\,\\Age\: 43,\\Address\: {\\Street\: \Downing Street 10\,\\City\: \London\,\\Country\: \Great Britain\\},\\Phone numbers\: [\\44 1234567\,\\44 2345678\\]\};int main() {cJSON* json cJSON_Parse(simple_json);cJSON_AddStringToObject(json, ID, 666);char* print_json_str cJSON_Print(json);printf(simple json: %s, print_json_str);return 0; } 编译运行 $./simple-cjson simple json: {FirstName: John,LastName: Doe,Age: 43,Address: {Street: Downing Street 10,City: London,Country: Great Britain},Phone numbers: [44 1234567, 44 2345678],ID: 666 }这部分完全可以参考CJSON项目的README。 注意事项 CJSON使用ANSI C编写的具有很多的指针操作如果不注意非常容易产生指针操作相关的问题这点最好阅读下项目的README和源代码。 参考 https://www.json.org/json-en.htmlhttps://www.ecma-international.org/wp-content/uploads/ECMA-404_2nd_edition_december_2017.pdfhttps://github.com/DaveGamble/cJSON
http://www.dnsts.com.cn/news/202339.html

相关文章:

  • 河北网站seo企业咨询公司有哪些
  • 建设银行 产品管理中心网站制作网页的教程
  • 泊头市有做网站的吗山东手机app开发公司
  • 网站建设方法总汇河南省住房建设厅网站首页
  • 珠宝静态网站模板网站建设维护的相关基本知识
  • 网站建立的步骤是莲花网站
  • 做网站1g1核够吗江门网站设计找哪家
  • 湖北网络营销网站cms开源网站管理系统
  • 手机app 网站建设应用商店app下载安装
  • 庆阳做网站公司龙岗建网站公司
  • 灵犀科技 高端网站建设网络营销平台名词解释
  • 服装公司网站建设策划书服装类电子商务网站建设报告
  • 做网站的那些高清图上哪里找公司做网站的费用怎么记账
  • 东莞设计网站公司三亚按下了暂停键
  • 如何做静态页网站做淘宝客网站需要多大带宽
  • 好看的网站源码企业营销型网站的内容
  • 益阳市网站建设扬中网站建设哪家好
  • 如何分析对手网站关键词上海网页制作与网站设计
  • 公司网页网站如何做正能量免费下载软件入口
  • 云阳网站制作小伙做网色网站
  • 网站建设教学工作总结6wordpress分页插件
  • 做网站可以不买域名和主机吗昆明网站关键字优化
  • 海南省住房公积金管理局网站电脑赚钱的项目有哪些
  • 宜昌市住房和城乡建设官方网站超溜网站建设
  • 长沙 php企业网站系统南京网站建设知识
  • 徐汇区网站建设做网站还能赚钱
  • 计算机机应用网站建设与维护组态王如何做网站链接
  • 雄安建设工程信息网站国外低代码开发平台
  • 怎样写精品课程网站建设珠海建站网站
  • c 怎么做网站开发建设机械网站咨询