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_value
、json_integer_value
、json_boolean_value
等函数获取这些字段的具体值。
最后,我们需要释放掉JSON对象的内存,以免出现内存泄漏的情况,其方式为调用json_decref
函数。