JSON格式是一种数据交换的文本格式,由两种数据结构组成:对象和数组。对象是由键值对组成的无序集合,键是字符串,值可以是任何类型,包括对象和数组。对象由一对花括号{ }包围,键和值之间用冒号:分隔。键值对之间用逗号,分隔。数组是值的有序集合,每个值可以是任何类型,包括对象和数组。数组由一对方括号[ ]包围,值之间用逗号,分隔。
JSON解析流程
- 将存储了JSON数据的字符串转换成JSON格式,使用cJSON_Parse() 进行解析,该函数的返回值就是cJSON格式的数据。
- 转换成功之后,可以对转换的JSON格式进行输出,使用cJSON_Print()函数,返回值就是存储了JSON格式的字符串
- 对JSON数据进行解析,其中可以先从JSON对象中获得某个键的值,相当于对某个键值对进行解析,如果键值对的值的类型不是字符串、整型、浮点型,则需要继续对键值对进行解析。
- 如果键值对的类型不是基本类型,而是对象或者数组,则需要继续解析
- 键值对的值的类型是数组,此时可以选择调用cJSON_GetArraySize()函数,该函数的作用是获取数组中的元素的数量。另外,可以选择调用cJSON_GetArrayItem()函数,可以获取数组中的元素
- 数组的元素类型是对象,则可以选择调用cJSON_GetObjectItem()函数对对象进行解析。
- CJSON_PUBLIC(cJSON *) cJSON_GetObjectItem(const cJSON * const object, const char * const string);//object:对象 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);
- CJSON_PUBLIC(int) cJSON_GetArraySize(const cJSON *array);//获取数组中元素的数量
- CJSON_PUBLIC(cJSON *) cJSON_GetArrayItem(const cJSON *array, int index);//获取数组中的元素
复制代码 构造JSON流程
- 需要首先创建一个JSON顶层对象,需要调用cJSON_CreateObject()
- 调用cJSON_CreateObject()来创建新的小对象,此时可以选择向小对象中添加键值对,添加键值对的前提是构造键值对,需要先把键值对的值添加到创建的对象中,再把小对象添加到其他对象中,具有嵌套关系。根据键值对的值的类型,可以选择调用。
- /* 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);
- /* These utilities create an Array of count items. */
- 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 **strings, int count);
- /* Append item to the specified array/object. */
- CJSON_PUBLIC(void) cJSON_AddItemToArray(cJSON *array, cJSON *item);
- CJSON_PUBLIC(void) cJSON_AddItemToObject(cJSON *object, const char *string, cJSON *item);
- /* Remove/Detatch items from Arrays/Objects. */
- CJSON_PUBLIC(void) cJSON_DeleteItemFromArray(cJSON *array, int which);
- CJSON_PUBLIC(cJSON *) cJSON_DetachItemFromObject(cJSON *object, const char *string);
复制代码 来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |