核心思想:
将C语言结构体变量转化为json格式的字符串
#include "s2j.h"
#include <stdint.h>
#include <stdio.h>
//定义Student结构体类型
typedef struct {
uint8_t id;
double weight;
uint8_t score[8];
char name[10];
} Student;
//将结构体转化为cJSON对象
static cJSON *struct_to_json(void* struct_obj) {
Student *struct_student = (Student *)struct_obj;
s2j_create_json_obj(json_student);
s2j_json_set_basic_element(json_student, struct_student, int, id);
s2j_json_set_basic_element(json_student, struct_student, double, weight);
s2j_json_set_array_element(json_student, struct_student, int, score, 8);
s2j_json_set_basic_element(json_student, struct_student, string, name);
return json_student;
}
int main(void) {
//定义Student结构体类型变量
static Student student = {
.id = 24,
.weight = 71.2,
.score = { 1, 2, 3, 4, 5, 6, 7, 8 },
.name = "armink",
};
//将结构体Student类型变量student转化为cJSON对象
cJSON *json_student = struct_to_json(&student);
//输出不带格式的json字符串
char*json_string = cJSON_PrintUnformatted(json_student);
puts(json_string);
//输出带格式的json字符串
json_string = cJSON_Print(json_student);
printf("\n");
puts(json_string);
//销毁cJSON对象json_student
s2j_delete_json_obj(json_student);
return 0;
}运行结果如图:

交流群:599151072
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复