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

c 遍歷json is字符串

老白1年前8瀏覽0評論

JSON(JavaScript Object Notation)是一種輕量級的數據交換格式,常用于Web服務之間的數據交換。在C語言中,我們可以使用開源的json-c庫來解析和生成JSON數據。在處理JSON數據時,我們需要遍歷JSON中的各個元素,這篇文章將介紹如何在C語言中遍歷JSON字符串。

在json-c庫中,我們使用json_tokener_parse函數將JSON字符串解析為一個json_object結構體。json_object結構體中的元素可以使用json_object_object_foreach(遍歷對象)、json_object_array_foreach(遍歷數組)和json_object_get_string(獲取字符串)等方法進行訪問。

#include <stdio.h>
#include <json-c/json.h>
int main() {
// JSON字符串
char *json_str = "{\"name\":\"Alice\",\"age\":18,\"hobbies\":[\"reading\",\"swimming\"]}";
// 解析JSON字符串
json_object *json_obj = json_tokener_parse(json_str);
// 遍歷JSON對象
json_object_object_foreach(json_obj, key, val) {
// 判斷元素類型
enum json_type type = json_object_get_type(val);
printf("key: %s, type: %d, ", key, type);
if (type == json_type_string) {
printf("value: %s\n", json_object_get_string(val));
} else if (type == json_type_int) {
printf("value: %d\n", json_object_get_int(val));
} else if (type == json_type_array) {
printf("value: [");
int len = json_object_array_length(val);
for (int i = 0; i < len; i++) {
printf("%s", json_object_get_string(json_object_array_get_idx(val, i)));
if (i < len - 1) {
printf(", ");
}
}
printf("]\n");
} else {
printf("unknown value\n");
}
}
// 釋放內存
json_object_put(json_obj);
return 0;
}

在上述代碼中,我們將JSON字符串解析成一個json_object結構體,并使用json_object_object_foreach方法遍歷其元素。在遍歷過程中,我們使用json_object_get_type方法獲取元素類型,然后使用不同的方法獲取元素的值。對于數組類型的元素,我們使用json_object_array_length方法獲取數組長度,并使用json_object_array_get_idx和json_object_get_string方法獲取數組元素。

通過上述代碼,我們可以方便地遍歷JSON字符串,獲取其中的元素值。在實際開發中,我們可以將上述代碼封裝成一個函數或工具類,以便在需要時調用。