JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。
因为其简洁明了的结构,被广泛用于互联网上的数据传输和存储。
在C语言中,我们可以使用第三方库来解析JSON字符串数组。
#include <stdio.h> #include <jansson.h> int main() { char *json_string = "[{\"name\":\"Peter\", \"age\":25}, {\"name\":\"Jack\", \"age\":30}]"; json_t *root; json_error_t error; root = json_loads(json_string, 0, &error); if(!root) { printf("json error on line %d: %s\n", error.line, error.text); return 1; } int i; for(i = 0; i < json_array_size(root); i ++) { json_t *data, *name, *age; const char *name_str; int age_int; data = json_array_get(root, i); name = json_object_get(data, "name"); age = json_object_get(data, "age"); name_str = json_string_value(name); age_int = json_integer_value(age); printf("name: %s, age: %d\n", name_str, age_int); } json_decref(root); return 0; }
在上述代码中,我们使用了jansson库来解析JSON字符串数组。首先,我们声明了一个JSON字符串,该字符串是由两个对象组成的数组。
然后,我们使用json_loads函数将JSON字符串加载到内存中,并按照格式要求进行解析。如果出现错误,该函数将返回NULL并将错误信息存储在错误对象中。
接下来,我们遍历JSON数组中的所有对象,并使用json_object_get函数获取每个对象中的属性。由于JSON中的数据类型是不确定的,因此我们将属性值转换为字符串或整数。
最后,我们使用json_decref函数释放内存。
需要注意的是,该代码仅适用于解析JSON字符串数组中的简单对象。如果JSON字符串数组中的对象结构更加复杂,需要进行更多的判断和处理。