芯片资讯
你的位置:ATMEGA系列ATMEL芯片-亿配芯城 > 芯片资讯 > CSON使用实例:定义数据模型
CSON使用实例:定义数据模型
- 发布日期:2024-01-01 07:58 点击次数:70 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