芯片资讯
你的位置:ATMEGA系列ATMEL芯片-亿配芯城 > 芯片资讯 > CSON使用实例:定义数据模型
CSON使用实例:定义数据模型
- 发布日期:2024-01-01 07:58 点击次数:78 CSON使用实例声明结构体:
/** 项目结构体 */
struct project
{
int id;
char *name;
};
/** 仓库结构体 */
struct hub
{
int id;
char *user;
struct project *cson;
};
定义数据模型:对每一个需要使用cson的结构体,都需要定义相对应的数据模型
/** 项目结构体数据模型 */
CsonModel projectModel[] =
{
CSON_MODEL_OBJ(struct project),
CSON_MODEL_INT(struct project, id),
CSON_MODEL_STRING(struct project, name),
};
/** 仓库结构体数据模型 */
CsonModel hubModel[] =
{
CSON_MODEL_OBJ(struct hub),
CSON_MODEL_INT(struct hub, id),
CSON_MODEL_STRING(struct hub, user),
CSON_MODEL_STRUCT(struct hub, cson, projectModel, sizeof(projectModel)/sizeof(CsonModel))
};
使用CSON解析:只需要定义好数据模型,就可以使用CSON读json进行序列化和反序列化
void csonDemo(void)
{
char *jsonDemo = "{"id": 1,
EEPROM带电可擦可编程存储器芯片大全 "user": "Letter",
电子元器件PDF资料大全 "cson": {"id": 2,
ATMEGA系列ATMEL芯片COM "name": "cson"}}";
/** 解析json */
struct hub *pHub = csonDecode(jsonDemo,
芯片交易网IC交易网 hubModel,CMOS图像传感器集成电路芯片 sizeof(hubModel)/sizeof(CsonModel));
printf("hub: id: %d, user: %s, project id: %d, project name: %srn",
pHub- >id, pHub- >user, pHub- >cson- >id, pHub- >cson- >name);
/** 序列化对象 */
char *formatJson = csonEncodeFormatted(pHub, hubModel, sizeof(hubModel)/sizeof(CsonModel));
printf("format json: %srn", formatJson);
/** 释放结构体对象 */
csonFree(pHub, hubModel, sizeof(hubModel)/sizeof(CsonModel));
/** 释放序列化生成的json字符串 */
csonFreeJson(formatJson);
}
运行结果:hub: id: 1, user: Letter, project id: 2, project name: cson
format json: {
"id": 1,
"user": "Letter",
"cson": {
"id": 2,
"name": "cson"
}
}
可以看到,无论是解析json,还是序列化结构体到json,在使用CSON的情况下,ATMEGA系列-ATMEL芯片都只需要一行代码就可以解决,同样的操作,在使用原生cJSON的情况下,你可能需要多次判断,解析元素。
相关资讯
- 怎样使用莱迪思FPGA应对后量子安全环境呢?2024-01-04
- 如何在FPGA上使用resizer IP来调整图像的大小2023-12-29
- FPGA协处理的优势有哪些?如何去使用FPGA协处理?2023-12-29
