编译方式(cJSON库,一共两个文件:cJSON.c、cJSON.h)

gcc cJSON.c main.c -o main -lm

基本接口说明

创建的JSON格式说明:{}表示一个Object,[]表示一个Array

cJSON_CreateObject:创建一个JSON结构体 cJSON_AddItemToObject:把一个item添加到JSON结构体里 cJSON_Print:将JSON格式的字符串转成普通字符串 cJSON_Parse:将普通字符串转成JSON格式的字符串 cJSON_Delete:释放JSON结构体

下面这些宏定义可以更快捷地帮助你创建JSON节点#define cJSON_AddNullToObject(object,name) cJSON_AddItemToObject(object, name, cJSON_CreateNull())

#define cJSON_AddTrueToObject(object,name) cJSON_AddItemToObject(object, name, cJSON_CreateTrue())

#define cJSON_AddFalseToObject(object,name) cJSON_AddItemToObject(object, name, cJSON_CreateFalse())

#define cJSON_AddBoolToObject(object,name,b) cJSON_AddItemToObject(object, name, cJSON_CreateBool(b))

#define cJSON_AddNumberToObject(object,name,n) cJSON_AddItemToObject(object, name, cJSON_CreateNumber(n))

#define cJSON_AddStringToObject(object,name,s) cJSON_AddItemToObject(object, name, cJSON_CreateString(s))1

2

3

4

5

61

2

3

4

5

6

比如如果要添加一个“name”:“Tom”的节点,下面两行代码都是相等的cJSON_AddStringToObject(root, "name", "Tom")

cJSON_AddItemToObject(root, "name", cJSON_CreateString("Tom"))1

21

2

下面介绍JSON创建和解析的demo

创建JSON的方法

demo1{

"name": "Tom",

"age": 25,

"marry": true,

"child": null}1

2

3

4

5

61

2

3

4

5

6

创建demo1的代码实现char * cjson_create_test1(void)

{

char * out;

cJSON *root;

root = cJSON_CreateObject();

if(!root)

{

printf("cJSON create error!!\n");

return NULL;

}

cJSON_AddItemToObject(root, "name", cJSON_CreateString("Tom"));

cJSON_AddItemToObject(root, "age", cJSON_CreateNumber(25));

cJSON_AddItemToObject(root, "marry", cJSON_CreateBool(1));

cJSON_AddItemToObject(root, "child", cJSON_CreateNull());

out=cJSON_Print(root);

cJSON_Delete(root);

if(out)

{

printf("%s\n", out);

return out;

}

return NULL;

}1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

281

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

demo2{

"name": "Tom",

"age": 25,

"marry": true,

"children": [{

"name": "May",

"age": 2}, {

"name": "Kendy",

"age": 3}, {

"name": "Mark",

"age": 1}]}1

2

3

4

5

6

7

8

9

10

11

12

13

14

151

2

3

4

5

6

7

8

9

10

11

12

13

14

15

创建demo2的实现方法char * cjson_create_test2(void)

{

char * out;

cJSON *root;

cJSON *child, *child1, *child2, *child3;

root = cJSON_CreateObject();

if(!root)

{

printf("cJSON create error!!\n");

return NULL;

}

cJSON_AddItemToObject(root, "name", cJSON_CreateString("Tom"));

cJSON_AddItemToObject(root, "age", cJSON_CreateNumber(25));

cJSON_AddItemToObject(root, "marry", cJSON_CreateBool(1));

child = cJSON_CreateArray();

CJSON_CHK_FAIL(child, NULL);

cJSON_AddItemToObject(root, "children", child);

child1 = cJSON_CreateObject();

CJSON_CHK_FAIL(child1, NULL);

cJSON_AddItemToObject(child1, "name", cJSON_CreateString("May"));

cJSON_AddItemToObject(child1, "age", cJSON_CreateNumber(2));

child2 = cJSON_CreateObject();

CJSON_CHK_FAIL(child2, NULL);

cJSON_AddItemToObject(child2, "name", cJSON_CreateString("Kendy"));

cJSON_AddItemToObject(child2, "age", cJSON_CreateNumber(3));

child3 = cJSON_CreateObject();

CJSON_CHK_FAIL(child3, NULL);

cJSON_AddItemToObject(child3, "name", cJSON_CreateString("Mark"));

cJSON_AddItemToObject(child3, "age", cJSON_CreateNumber(1));

cJSON_AddItemToArray(child, child1);

cJSON_AddItemToArray(child, child2);

cJSON_AddItemToArray(child, child3);

out=cJSON_Print(root);

cJSON_Delete(root);

if(out)

{

printf("%s\n", out);

return out;

}

return NULL;

}1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

511

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

解析JSON的方法

解析上面的demo1void cjson_parse_test1(void)

{

cJSON * root;

cJSON *name, *age, *marry, *child;

root = cJSON_Parse(cjson_create_test1());

if(!root)

{

printf("cJSON_Parse error!!\n");

return;

}

name = cJSON_GetObjectItem(root, "name");

if(name)

{

printf("Get name value : %s\n", name->valuestring);

}

age = cJSON_GetObjectItem(root, "age");

if(age)

{

printf("Get age value : %d\n", age->valueint);

}

marry = cJSON_GetObjectItem(root, "marry");

if(marry)

{

printf("Get marry value : %d\n", marry->valueint);

}

child = cJSON_GetObjectItem(root, "child");

if(child)

{

printf("Get child value : %s\n", marry->valuestring);

}

cJSON_Delete(root);

}1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

381

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

解析上面的demo2void cjson_parse_test2(void)

{

cJSON * root;

cJSON *name, *age, *marry, *children;

cJSON *childNode, *childName, *childAge;

root = cJSON_Parse(cjson_create_test2());

if(!root)

{

printf("cJSON_Parse error!!\n");

return;

}

name = cJSON_GetObjectItem(root, "name");

if(name)

{

printf("Get name value : %s\n", name->valuestring);

}

age = cJSON_GetObjectItem(root, "age");

if(age)

{

printf("Get age value : %d\n", age->valueint);

}

marry = cJSON_GetObjectItem(root, "marry");

if(marry)

{

printf("Get marry value : %d\n", marry->valueint);

}

children = cJSON_GetObjectItem(root, "children");

if(children)

{

int size = cJSON_GetArraySize(children);

printf("Get children size : %d\n", size);

int i = 0;

for(i=0; i

{

childNode = cJSON_GetArrayItem(children, i);

if(childNode)

{

childName = cJSON_GetObjectItem(childNode,"name");

if(childName)

{

printf("Get child name : %s\n", childName->valuestring);

}

childAge = cJSON_GetObjectItem(childNode,"age");

if(childAge)

{

printf("Get child age : %d\n", childAge->valueint);

}

}

}

}

cJSON_Delete(root);

}1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

cjson构建_cJSON用法总结相关推荐

  1. cjson构建_cJSON对象的构建

    # cJSON对象的构建 ## 开始阅读源代码 **上面的文章中我们我们抓住了一条线,通过一个测试函数的实现来了解整个项目中的部分功能,当然,这不会覆盖所有的源代码,但我们会有一个清晰的思路来一步一步 ...

  2. windows c++ cjson 使用_cJSON源码剖析

    1. 概述      cJSON源码非常简单,即使是最新版本的cJSON,其 cJSON.c文件也仅有 750 多行的代码, cJSON.h文件 200 行代码不到.其.h文件和.c文件总代码量不超过 ...

  3. cjson构建_[置顶] cJSON库(构建json与解析json字符串)-c语言

    一.c语言获取json中的数据. 1.先要有cJOSN库,两个文件分别是cJSON.c和cJSON.h. 2.感性认识 char * json = "{ \"json\" ...

  4. [7.14更新日志]CRP编译缓存和海外构建让编译健步如飞!

    编译缓存,海外构建,自由配置是否上传包等功能 编译依赖支持缓存,让快速反馈更加快速 支持的语言包括Java.Go.Node.js.Python,实测可以将分钟级编译时长降低到秒级,极大地缩短了工作流的 ...

  5. Docker 多阶段构建镜像multi-stage

    多阶段构建是一个新特性,需要 Docker 17.05 或更高版本的守护进程和客户端.对于那些努力优化 Dockerfiles 并使其易于阅读和维护的人来说,多阶段构建非常有用. 在之前先来学习术语: ...

  6. Jenkins主从节点配置

    jenkins支持主从模式,这将会把构建任务分发到多个从节点去执行,这样就可以支撑起多个项目的大量构建任务,同时,你可以提供多种环境(如:开发环境.生产环境)来对同一个项目进行测试和构建.想要进一步了 ...

  7. python文件路径过滤器_SUMO入门(八) - 从Python引入TraCI接口

    SUMO入门(八) - 从Python引入TraCI接口 TraCI TraCI/Interfacing TraCI from Python TraCI命令分为13个部分,它们对应于各个模块: gui ...

  8. 撩开Docker的面纱

    简述 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会 ...

  9. webpack配置完全指南

    概念 来看一下官网对webpack的定义: 本质上,webpack 是一个现代 JavaScript 应用程序的静态模块打包器(module bundler).当 webpack 处理应用程序时,它会 ...

最新文章

  1. 美多商城之验证码(短信验证码2)
  2. csharp通过dll调用opencv函数,图片作为参数
  3. 【备忘】とある画像の自动生成
  4. 2014-03-09 Spring的学习(1)------Spring管理Bean(实例化Bean)
  5. 【转】python装饰器
  6. 为mysql数据库建立索引
  7. linux 使用paho C库实现mqtt客户端
  8. SQL Server表竖列转横向显示
  9. 【ElasticSearch】Es 缓存
  10. Linux之find + sed组合替换命令
  11. 《算法图解》——数组和链表
  12. HCIE Security IPv6基础与安全技术 备考笔记(幕布)
  13. leetcode - Anagrams
  14. mysql用declare会报错_mysql创建存储过程declare 变量时报错
  15. paip.银联支付接口订单号uuid算法
  16. 微信小程序 背景图片设置
  17. 【python实现网络爬虫21】天眼查企业数据获取
  18. 面试——路径、转发与重定向的区别
  19. NOIP2015酱油记
  20. 国内有哪些比较靠谱的云主机供应商,性价比高一点的?

热门文章

  1. python协同过滤算法_详解python实现协同过滤推荐算法
  2. Python下mysql数据库连接池
  3. 深圳网站建设公司哪家专业?
  4. 搭建自己的健康上报APP全栈开发教学
  5. 【Web 安全】CSRF 攻击详解
  6. 酒店管理系统项目模板、毕业设计
  7. 英语六级的三大经典句型
  8. 游戏蓝牙耳机哪个牌子好?2022游戏蓝牙耳机推荐
  9. 和真正的程序员在一起是怎样的体验【转载】
  10. 智能洁面仪的功能特点