struct2json
时间: 2023-08-13 22:38:30 浏览: 105
struct2json:JSON和C结构之间的快速转换库。 为C实现结构序列化和反序列化。 C结构体与JSON快速互转库,快速实现C结构体的序列化及反序列化
您好!将一个结构体转换为 JSON 格式的字符串,需要使用 JSON 库。以下是一个示例程序,使用了开源的 cJSON 库实现了结构体转 JSON 的功能:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "cJSON.h"
typedef struct {
int id;
char name[32];
double score;
} Student;
int main() {
// 创建一个结构体对象
Student s = { 123, "Tom", 90.5 };
// 将结构体转换为 JSON 格式的字符串
cJSON* root = cJSON_CreateObject();
cJSON_AddNumberToObject(root, "id", s.id);
cJSON_AddStringToObject(root, "name", s.name);
cJSON_AddNumberToObject(root, "score", s.score);
char* json_str = cJSON_Print(root);
printf("%s\n", json_str);
// 释放内存
cJSON_Delete(root);
free(json_str);
return 0;
}
```
在上面的示例程序中,我们定义了一个名为 `Student` 的结构体,并创建了一个结构体对象 `s`。然后使用 cJSON 库中的 `cJSON_CreateObject()` 函数创建了一个 JSON 对象 `root`,并使用 `cJSON_AddNumberToObject()`、`cJSON_AddStringToObject()`、`cJSON_AddNumberToObject()` 等函数将结构体中的成员添加到 JSON 对象中。最后使用 `cJSON_Print()` 函数将 JSON 对象转换为字符串。
以上程序的输出结果为:
```json
{"id":123,"name":"Tom","score":90.5}
```
需要注意的是,在使用 cJSON 库时,需要在编译时链接该库。在 Linux 系统中,可以使用以下命令编译上面的程序:
```
gcc struct2json.c cJSON.c -o struct2json
```
其中,`cJSON.c` 是 cJSON 库的源代码文件。
阅读全文