使用cJSONG解析一个json

本文介绍如何使用C语言和cJSON库进行JSON数据的创建、解析及打印。通过具体代码示例,详细展示了从创建JSON对象、填充数据到最终解析的过程,适合初学者快速上手。

demon如下

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

char *creat_json()
{
	char *creat_json = NULL;

	cJSON *json=NULL;
	cJSON *province=NULL;
	cJSON *twcityArray=NULL;
	
/*1.初始化*/	
	//创建一个json对象,返回一个cJSON结构体类型的指针。
	json=cJSON_CreateObject();

	//创建一个json对象,返回一个cJSON结构体类型的指针。
	province=cJSON_CreateObject();
	twcityArray = cJSON_CreateArray();

/*2.填充初始化的结构体类型*/	
	//向jison对象中添加字符串
	cJSON_AddStringToObject(json, "country", "中国");
	cJSON_AddStringToObject(province, "name", "台湾");

	//向数组对象中添加一个元素
	cJSON_AddItemToArray(twcityArray, cJSON_CreateString("台北"));
	cJSON_AddItemToArray(twcityArray, cJSON_CreateString("高雄"));

/*3.结构体嵌套填充*/
	//向cJSON结构体province中添加cityArray数组对象
	cJSON_AddItemToObject(province, "city", twcityArray);

	//向cJSON结构体json中添加province的cJSON结构体
	cJSON_AddItemToObject(json, "province", province);
	
	//cJSON_Print(json)将一个cJSON结构体代表的json对象转换为一个json格式的字符串
	creat_json=cJSON_Print(json);
	printf("%s\n", creat_json);
	return creat_json;
}


int main()
{
	int i;
	cJSON *cJSON_object = NULL;
	cJSON *country = NULL;
	cJSON *province = NULL;
	cJSON *province_name = NULL;
	cJSON *city_name = NULL;
	
	const char *json=creat_json();
	
	cJSON_object = cJSON_Parse(json);

	//解析国家
	country = cJSON_GetObjectItem(cJSON_object, "country");
	printf("解析country:%s\n",country->valuestring);

	//解析省份
	province = cJSON_GetObjectItem(cJSON_object,"province");
	province_name = cJSON_GetObjectItem(province, "name");
	printf("解析province name:%s\n",province_name->valuestring);

	//解析市
	city_name=cJSON_GetObjectItem(province, "city");
	int count = cJSON_GetArraySize(city_name);
	printf("解析city:");
	for(i=0;i<count;i++)
	{
		cJSON *cityItem = cJSON_GetArrayItem(city_name, i);
		printf("%s  ",cityItem->valuestring);
	}
	printf("\n");
	
	
	
	return 0;
}

Makefile

LDFLAGS = -lm
OBJES = cJSON.o creat_json.o

creat_json: $(OBJES) 
	gcc $(OBJES) -o creat_json $(LDFLAGS)
test.o:creat_json.c cJSON.h
	gcc -c creat_json.c -o creat_json.o
cJSON.o:cJSON.c cJSON.h
	gcc -c cJSON.c -o cJSON.o
clean:
	rm -rf *.o creat_json


运行结果
在这里插入图片描述
cJSON下载教程
解析json示例

内容概要:本文围绕可变桨叶四旋翼无人机的规范控制与点对点运动模拟展开,重点研究优化推力配策略在翻转动作中的应用与性能比较。通过Matlab代码实现,构建了四旋翼动力学模型,并设计了多种控制算法以实现精确的姿态调整与轨迹跟踪。研究对比了不同推力配方案在执行高机动性翻转动作时的稳定性、能耗效率与响应速度,旨在提升无人机在复杂飞行任务中的动态性能与控制精度。该仿真研究为无人机飞控系统的设计与优化提供了理论依据和技术支持。; 适合人群:具备一定自动控制理论基础和Matlab编程能力,从事无人机控制、飞行器动力学或机器人系统研究的科研人员及研究生。; 使用场景及目标:① 实现四旋翼无人机在三维空间中的精确点对点运动控制;② 对比析不同推力配策略在执行翻转等高难度动作时的控制效果与能耗表现,优化飞行性能;③ 为无人机自主飞行、特技飞行及复杂环境下的机动控制提供算法验证平台。; 阅读建议:此资源以Matlab仿真为核心,建议读者结合相关控制理论知识,深入理解代码实现细节,重点关注动力学建模、控制律设计与推力配模块。在学习过程中,应动手调试参数,复现文中翻转动作的仿真结果,并尝试拓展至其他复杂飞行任务,以加深对无人机控制机理的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值