色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

c 把json轉換成數組對象數組對象

錢良釵2年前7瀏覽0評論

在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對象后,遍歷學生數組,打印出姓名和年齡。