我是靠谱客的博主 热心小松鼠,最近开发中收集的这篇文章主要介绍Linux C语言使用cJSON操作json,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

有一个需求,使用C语言,通过cJSON来操作json。流程如下:

1、创建一个空的根json对象,并打印json字符串。

2、判断json中是否存在键"mode_1",不存在则打印信息

3、json中不存在键"mode_1",创建一个键为"mode_1",值均为26的int类型数组,数组长度为32 。

4、将新创建的"mode_1"对象添加到根json对象中,并打印json字符串。

5、判断json中是否存在键"mode_2",不存在则打印信息

6、json中不存在键"mode_2",创建一个键为"mode_2",值均为22的int类型数组,数组长度为32 。

7、将新创建的"mode_2"对象添加到根json对象中,并打印json字符串。

8、将"mode_1"数组的第三个值修改为25 ,并打印json字符串。

最终要打印的内容如下:

{
    "mode_1":    [26, 26, 25, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26],
    "mode_2":    [22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22]
}

代码实现:

#include <stdio.h>
#include "cJSON.h"

int main()
{
	cJSON *json;

	//创建json根节点
	json = cJSON_CreateObject();
	printf("%sn", cJSON_Print(json));//"{}"

	//查询某个键对应是否存在
	cJSON *item;
	item = cJSON_GetObjectItem(json, "mode_1");
	if(item == NULL)
	{
		printf("item = NULLn");

		//创建一个jsonarray
		int ints[32] = {0};
		for(int i = 0; i < 32; i++)
		{
			ints[i] = 26;
		}
		item = cJSON_CreateIntArray(ints, 32);
	}

	if(item != NULL)
	{
		cJSON_AddItemToObject(json, "mode_1", item);
	}
	printf("%sn", cJSON_Print(json));


	item = cJSON_GetObjectItem(json, "mode_2");
	if(item == NULL)
	{
		printf("item = NULLn");

		//创建一个jsonarray
		int ints[32] = {0};
		for(int i = 0; i < 32; i++)
		{
			ints[i] = 22;
		}
		item = cJSON_CreateIntArray(ints, 32);
	}

	if(item != NULL)
	{
		cJSON_AddItemToObject(json, "mode_2", item);
	}
	printf("%sn", cJSON_Print(json));

	//修改数组中的某个值
	item = cJSON_GetObjectItem(json, "mode_1");
	if(item != NULL)
	{
		//修改数据第3个键对应的值为 25
		cJSON *int_v;
		int_v = cJSON_CreateNumber(25);
		cJSON_ReplaceItemInArray(item, 2, int_v);
	}
	printf("%sn", cJSON_Print(json));

	cJSON_Delete(json);
}

效果如下:

以上,仅供参考cJSON的使用方法。

最后

以上就是热心小松鼠为你收集整理的Linux C语言使用cJSON操作json的全部内容,希望文章能够帮你解决Linux C语言使用cJSON操作json所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部