找回密码
 立即注册
首页 业界区 科技 JSON格式

JSON格式

卢铃语 昨天 10:12
JSON格式是一种数据交换的文本格式,由两种数据结构组成:对象和数组。对象是由键值对组成的无序集合,键是字符串,值可以是任何类型,包括对象和数组。对象由一对花括号{ }包围,键和值之间用冒号:分隔。键值对之间用逗号,分隔。数组是值的有序集合,每个值可以是任何类型,包括对象和数组。数组由一对方括号[ ]包围,值之间用逗号,分隔。
JSON解析流程


  • 将存储了JSON数据的字符串转换成JSON格式,使用cJSON_Parse() 进行解析,该函数的返回值就是cJSON格式的数据。
  • 转换成功之后,可以对转换的JSON格式进行输出,使用cJSON_Print()函数,返回值就是存储了JSON格式的字符串
  • 对JSON数据进行解析,其中可以先从JSON对象中获得某个键的值,相当于对某个键值对进行解析,如果键值对的值的类型不是字符串、整型、浮点型,则需要继续对键值对进行解析。

  • 如果键值对的类型不是基本类型,而是对象或者数组,则需要继续解析
  • 键值对的值的类型是数组,此时可以选择调用cJSON_GetArraySize()函数,该函数的作用是获取数组中的元素的数量。另外,可以选择调用cJSON_GetArrayItem()函数,可以获取数组中的元素
  • 数组的元素类型是对象,则可以选择调用cJSON_GetObjectItem()函数对对象进行解析。
  1. CJSON_PUBLIC(cJSON *) cJSON_GetObjectItem(const cJSON * const object, const char * const string);//object:对象  string:键名
  2. CJSON_PUBLIC(cJSON *) cJSON_GetObjectItemCaseSensitive(const cJSON * const object, const char * const string);
  3. CJSON_PUBLIC(cJSON_bool) cJSON_HasObjectItem(const cJSON *object, const char *string);
  4. CJSON_PUBLIC(int) cJSON_GetArraySize(const cJSON *array);//获取数组中元素的数量
  5. CJSON_PUBLIC(cJSON *) cJSON_GetArrayItem(const cJSON *array, int index);//获取数组中的元素
复制代码
构造JSON流程


  • 需要首先创建一个JSON顶层对象,需要调用cJSON_CreateObject()
  • 调用cJSON_CreateObject()来创建新的小对象,此时可以选择向小对象中添加键值对,添加键值对的前提是构造键值对,需要先把键值对的值添加到创建的对象中,再把小对象添加到其他对象中,具有嵌套关系。根据键值对的值的类型,可以选择调用。
  1. /* These calls create a cJSON item of the appropriate type. */
  2. CJSON_PUBLIC(cJSON *) cJSON_CreateNull(void);
  3. CJSON_PUBLIC(cJSON *) cJSON_CreateTrue(void);
  4. CJSON_PUBLIC(cJSON *) cJSON_CreateFalse(void);
  5. CJSON_PUBLIC(cJSON *) cJSON_CreateBool(cJSON_bool boolean);
  6. CJSON_PUBLIC(cJSON *) cJSON_CreateNumber(double num);
  7. CJSON_PUBLIC(cJSON *) cJSON_CreateString(const char *string);
  8. /* raw json */
  9. CJSON_PUBLIC(cJSON *) cJSON_CreateRaw(const char *raw);
  10. CJSON_PUBLIC(cJSON *) cJSON_CreateArray(void);
  11. CJSON_PUBLIC(cJSON *) cJSON_CreateObject(void);
  12. /* These utilities create an Array of count items. */
  13. CJSON_PUBLIC(cJSON *) cJSON_CreateIntArray(const int *numbers, int count);
  14. CJSON_PUBLIC(cJSON *) cJSON_CreateFloatArray(const float *numbers, int count);
  15. CJSON_PUBLIC(cJSON *) cJSON_CreateDoubleArray(const double *numbers, int count);
  16. CJSON_PUBLIC(cJSON *) cJSON_CreateStringArray(const char **strings, int count);
  17. /* Append item to the specified array/object. */
  18. CJSON_PUBLIC(void) cJSON_AddItemToArray(cJSON *array, cJSON *item);
  19. CJSON_PUBLIC(void) cJSON_AddItemToObject(cJSON *object, const char *string, cJSON *item);
  20. /* Remove/Detatch items from Arrays/Objects. */
  21. CJSON_PUBLIC(void) cJSON_DeleteItemFromArray(cJSON *array, int which);
  22. CJSON_PUBLIC(cJSON *) cJSON_DetachItemFromObject(cJSON *object, const char *string);
复制代码
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册