淘先锋技术网

首页 1 2 3 4 5 6 7

C语言中获取JSON字符串是一项比较常见的操作,下面我们来介绍一下如何实现。

#include <stdio.h>#include <stdlib.h>#include <string.h>#include <stdbool.h>#include <jansson.h>int main(int argc, char **argv) {
char *json_str = "{\"name\": \"张三\", \"age\": 20, \"gender\": true}";
json_error_t error;
json_t *root = json_loads(json_str, 0, &error);
if (!root) {
printf("JSON 解析错误,错误位置:%d 行 %d 列,错误信息:%s\n", error.line, error.column, error.text);
return -1;
}
json_t *name = json_object_get(root, "name");
if (name) {
const char *name_str = json_string_value(name);
printf("姓名:%s\n", name_str);
}
json_t *age = json_object_get(root, "age");
if (age) {
int age_int = json_integer_value(age);
printf("年龄:%d\n", age_int);
}
json_t *gender = json_object_get(root, "gender");
if (gender) {
bool gender_bool = json_boolean_value(gender);
printf("性别:%s\n", gender_bool ? "男" : "女");
}
json_decref(root);
return 0;
}

代码中,我们先定义了一个JSON字符串,并使用json_loads函数将其解析成一个JSON对象root

然后,我们通过json_object_get函数获取JSON对象中的相应字段,再通过json_string_valuejson_integer_valuejson_boolean_value等函数获取这些字段的具体值。

最后,我们需要释放掉JSON对象的内存,以免出现内存泄漏的情况,其方式为调用json_decref函数。