用c语言 使用jansson.h库将结构体转换为json字符串指针
时间: 2024-02-18 18:04:47 浏览: 157
结构体转为JSON文本
3星 · 编辑精心推荐
可以按照以下步骤使用 jansson.h 库将结构体转换为 JSON 字符串指针:
1. 首先,你需要在代码中包含 jansson.h 头文件:
```c
#include <jansson.h>
```
2. 然后,定义一个结构体并初始化:
```c
typedef struct {
int id;
char name[50];
double price;
} Product;
Product p = {1, "Apple", 2.99};
```
3. 接着,将结构体转换为 JSON 对象:
```c
json_t *json = json_pack("{s:i, s:s, s:f}",
"id", p.id,
"name", p.name,
"price", p.price);
```
这里使用了 `json_pack()` 函数,它根据指定的格式字符串创建一个 JSON 对象。格式字符串中的 `s` 表示字符串,`i` 表示整数,`f` 表示浮点数。
4. 最后,将 JSON 对象转换为字符串:
```c
char *json_str = json_dumps(json, JSON_INDENT(4));
```
这里使用了 `json_dumps()` 函数,它将 JSON 对象转换为字符串。第二个参数 `JSON_INDENT(4)` 表示使用 4 个空格进行缩进。
完整代码如下:
```c
#include <stdio.h>
#include <jansson.h>
typedef struct {
int id;
char name[50];
double price;
} Product;
int main()
{
Product p = {1, "Apple", 2.99};
json_t *json = json_pack("{s:i, s:s, s:f}",
"id", p.id,
"name", p.name,
"price", p.price);
char *json_str = json_dumps(json, JSON_INDENT(4));
printf("%s\n", json_str);
free(json_str);
json_decref(json);
return 0;
}
```
阅读全文