自学内容网 自学内容网

嵌入式Linux移植cJSON库

一、前言

  在使用嵌入式系统做项目时,碰见了使用JSON格式数据的需求,所以需要移植cJSON库进行组织和解析数据。

二、移植

  cJSON的github地址:https://github.com/DaveGamble/cJSON,可以在git仓库中直接clone代码下来:git clone https://github.com/DaveGamble/cJSON.git,此外还可以直接cJSON官网下载。
  下载完成之后,我们需要得到cJSON.c cJSON.h这两个文件,然后把这个文件复制到工程里面,头文件引用到cJSON.h的正确路径。

三、常用函数

1.cJSON *cJSON_Parse(const char *value)
从给定的json字符串中得到cjson对象
2.cJSON *cJSON_GetObjectItemCaseSensitive(const cJSON * const object,const char * const string)
用于从一个已解析的JSON对象中查找指定键的值,对键名的匹配区分大小写
3.int cJAON_GetArraySize(const cJSON *array)
获取cjson对象数组成员的个数
4.cJSON * cJSON_GetArrayItem(const vcJSON *array, int index)
根据下标获取cjosn对象数组中的对象
5.const char *cJSON_GetErrorPtr(void)
获取错误字符串
void cJSON_Delete(cJSON *item)
删除cjson对象,释放链表占用的内存空间

四、代码案例

#include "cJSON.h"

void parse_code(char *json_str)
{
   
cJSON *root = cJSON_Parse(json_str);//获取json对象
if(root==NULL)
{
   
printf("Error before:[%s]\n",cJSON_GetErrorPtr());
}
else
{
   
//解析字符串型键值对
const char *game= cJSON_GetObjectItemCaseSensitive(root,"game")->valuestring;
if(strcmp(game,"Basketball")==0)
{
   
//game值为Basketball实现的操作
}
//解析字符串数组键值对
cJSON *class_array = cJSON_GetObjectItemCaseSensitive

原文地址:https://blog.csdn.net/qq_45875853/article/details/143932275

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!