温馨提示:这篇文章已超过199天没有更新,请注意相关的内容是否还可用!
C语言中解析JSON列表的常用方法是使用第三方库,比如json-c库。该库提供了一些函数来解析和操作JSON数据。
需要包含json-c库的头文件,例如:
#include <json-c/json.h>
然后,可以使用json_tokener_parse()函数将JSON字符串解析为json_object对象。该函数将会返回一个指向json_object对象的指针,可以通过该指针来访问JSON数据。
const char *json_str = "{\"name\":\"John\",\"age\":30,\"city\":\"New York\"}";
struct json_object *json_obj = json_tokener_parse(json_str);
接下来,可以使用json_object_object_get()函数来获取JSON对象中的键值对。该函数接受两个参数,第一个参数是json_object对象,第二个参数是要获取的键的名称。
struct json_object *name_obj = json_object_object_get(json_obj, "name");
const char *name = json_object_get_string(name_obj);
可以使用json_object_get_type()函数来获取JSON对象的类型。该函数接受一个json_object对象作为参数,并返回一个枚举类型的值,表示JSON对象的类型。
enum json_type name_type = json_object_get_type(name_obj);
需要记得释放json_object对象的内存,以免造成内存泄漏。
json_object_put(json_obj);
通过json-c库提供的函数,我们可以方便地解析JSON列表并获取其中的数据。以下是完整的示例代码:
#include <stdio.h>
#include <json-c/json.h>
int main() {
const char *json_str = "{\"name\":\"John\",\"age\":30,\"city\":\"New York\"}";
struct json_object *json_obj = json_tokener_parse(json_str);
struct json_object *name_obj = json_object_object_get(json_obj, "name");
const char *name = json_object_get_string(name_obj);
enum json_type name_type = json_object_get_type(name_obj);
printf("Name: %s\n", name);
printf("Type: %d\n", name_type);
json_object_put(json_obj);
return 0;
}