在c語言中,要將json字符串轉換為數組對象數組,可以使用json-c庫。
首先,需要在代碼中包含json-c的頭文件,例如:
#include <json-c/json.h>
接下來,將json字符串解析成json對象:
const char *json_string = "{\"name\":\"張三\",\"age\":20}"; struct json_object *json = json_tokener_parse(json_string);
然后,判斷json對象的類型,如果是json數組,就將其轉換為數組對象數組:
if (json_object_is_type(json, json_type_array)) { int array_len = json_object_array_length(json); struct json_object *array_obj; struct json_object *array[array_len]; for (int i = 0; i < array_len; i++) { array_obj = json_object_array_get_idx(json, i); if (json_object_is_type(array_obj, json_type_object)) { array[i] = array_obj; } } }
在上述代碼中,我們使用了json_object_is_type函數來判斷json對象的類型,json_type_array表示該對象是json數組,json_type_object表示該對象是json對象。
最后,我們就可以對數組對象數組進行操作了。
完整的代碼如下:
#include <stdio.h> #include <json-c/json.h> int main() { const char *json_string = "{\"students\":[{\"name\":\"張三\",\"age\":20},{\"name\":\"李四\",\"age\":21}]}"; struct json_object *json = json_tokener_parse(json_string); if (json_object_is_type(json, json_type_object)) { struct json_object *students_json = json_object_object_get(json, "students"); if (json_object_is_type(students_json, json_type_array)) { int array_len = json_object_array_length(students_json); struct json_object *array_obj; struct json_object *array[array_len]; for (int i = 0; i < array_len; i++) { array_obj = json_object_array_get_idx(students_json, i); if (json_object_is_type(array_obj, json_type_object)) { array[i] = array_obj; struct json_object *name_json = json_object_object_get(array_obj, "name"); struct json_object *age_json = json_object_object_get(array_obj, "age"); const char *name = json_object_get_string(name_json); int age = json_object_get_int(age_json); printf("%s的年齡是%d\n", name, age); } } } } return 0; }
在上面的代碼中,我們將一個包含學生信息的json字符串解析成json對象后,遍歷學生數組,打印出姓名和年齡。
上一篇mysql雙主多從配置
下一篇python 面試題高級