网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
set(CMAKE_C_STANDARD 99)
add_executable(cjson_prj main.c)
修改之后
cmake_minimum_required(VERSION 3.21)
project(cjson_prj C)
set(CMAKE_C_STANDARD 99)
add_executable(cjson_prj main.c cJSON.c)
之后我们所有的修改都是在main.c中进行。
### 封装数据和打印数据示例
#include <stdio.h>
#include “cJSON.h”
int main(void)
{
cJSON* cjson_test = NULL;
cJSON* cjson_address = NULL;
cJSON* cjson_skill = NULL;
char* str = NULL;
/\* 创建一个JSON数据对象(链表头结点) \*/
cjson_test = cJSON\_CreateObject();
/\* 添加一条字符串类型的JSON数据(添加一个链表节点) \*/
cJSON\_AddStringToObject(cjson_test, "name", "mculover666");
/\* 添加一条整数类型的JSON数据(添加一个链表节点) \*/
cJSON\_AddNumberToObject(cjson_test, "age", 22);
/\* 添加一条浮点类型的JSON数据(添加一个链表节点) \*/
cJSON\_AddNumberToObject(cjson_test, "weight", 55.5);
/\* 添加一个嵌套的JSON数据(添加一个链表节点) \*/
cjson_address = cJSON\_CreateObject();
cJSON\_AddStringToObject(cjson_address, "country", "China");
cJSON\_AddNumberToObject(cjson_address, "zip-code", 111111);
cJSON\_AddItemToObject(cjson_test, "address", cjson_address);
/\* 添加一个数组类型的JSON数据(添加一个链表节点) \*/
cjson_skill = cJSON\_CreateArray();
cJSON\_AddItemToArray(cjson_skill, cJSON\_CreateString( "C" ));
cJSON\_AddItemToArray(cjson_skill, cJSON\_CreateString( "Java" ));
cJSON\_AddItemToArray(cjson_skill, cJSON\_CreateString( "Python" ));
cJSON\_AddItemToObject(cjson_test, "skill", cjson_skill);
/\* 添加一个值为 False 的布尔类型的JSON数据(添加一个链表节点) \*/
cJSON\_AddFalseToObject(cjson_test, "student");
/\* 打印JSON对象(整条链表)的所有数据 \*/
str = cJSON\_Print(cjson_test);
printf("%s\n", str);
return 0;
}
![image-20210730180202735](https://img-blog.csdnimg.cn/img_convert/4be9940c2aefafeb193e82b4dc5addcd.png)
### cJSON数据解析
#include <stdio.h>
#include “cJSON.h”
char *message =
“{
“name”:“mculover666”,
“age”: 22,
“weight”: 55.5,
“address”:
{
“country”: “China”,
“zip-code”: 111111
},
“skill”: [“c”, “Java”, “Python”],
“student”: false
}”;
int main(void)
{
cJSON* cjson_test = NULL;
cJSON* cjson_name = NULL;
cJSON* cjson_age = NULL;
cJSON* cjson_weight = NULL;
cJSON* cjson_address = NULL;
cJSON* cjson_address_country = NULL;
cJSON* cjson_address_zipcode = NULL;
cJSON* cjson_skill = NULL;
cJSON* cjson_student = NULL;
int skill_array_size = 0, i = 0;
cJSON* cjson_skill_item = NULL;
/\* 解析整段JSO数据 \*/
cjson_test = cJSON\_Parse(message);
if(cjson_test == NULL)
{
printf("parse fail.\n");
return -1;
}
/\* 依次根据名称提取JSON数据(键值对) \*/
cjson_name = cJSON\_GetObjectItem(cjson_test, "name");
cjson_age = cJSON\_GetObjectItem(cjson_test, "age");
cjson_weight = cJSON\_GetObjectItem(cjson_test, "weight");
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
](https://bbs.csdn.net/topics/618668825)**
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!