欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

c 循環遍歷json數組

張吉惟1年前9瀏覽0評論

在C語言中,遍歷JSON數組是一個非常常見的操作。可以使用循環來遍歷JSON數組并訪問其中的每個元素。以下是一個C循環遍歷JSON數組的簡單例子:

#include "json-c/json.h"
#include "json-c/json_object.h"
#include "json-c/json_object_iterator.h"
int main() {
const char* json_string = "[{\"name\":\"apple\", \"price\":1.2}, {\"name\":\"banana\", \"price\":0.8}, {\"name\":\"orange\", \"price\":1.0}]";
struct json_object* json_obj;
struct json_object_iterator it;
struct json_object_iterator it_end;
json_obj = json_tokener_parse(json_string);
it = json_object_iter_begin(json_obj);
it_end = json_object_iter_end(json_obj);
for (; !json_object_iter_equal(&it, &it_end); json_object_iter_next(&it)) {
struct json_object* item = json_object_iter_peek_value(&it);
struct json_object_iterator sub_it = json_object_iter_begin(item);
struct json_object_iterator sub_it_end = json_object_iter_end(item);
for (; !json_object_iter_equal(&sub_it, &sub_it_end); json_object_iter_next(&sub_it)) {
if (!strcmp(json_object_iter_peek_name(&sub_it), "name")) {
printf("Name: %s, ", json_object_get_string(json_object_iter_peek_value(&sub_it)));
} else {
printf("Price: %.2f\n", json_object_get_double(json_object_iter_peek_value(&sub_it)));
}   
}       
}
json_object_put(json_obj);
return 0;
}

在上面的代碼中,我們首先定義了一個JSON字符串,并使用json_tokener_parse函數將其解析為一個json_object對象。然后,我們使用json_object_iter_begin和json_object_iter_end函數獲取一個json_object_iterator對象和一個結束迭代器。使用json_object_iter_begin獲取的迭代器指向JSON數組的第一個元素。

接下來,我們使用一個外部循環來遍歷JSON數組里的每個元素。在每一次迭代中,我們使用json_object_iter_peek_value函數獲取當前項的json_object指針,并使用json_object_iter_begin和json_object_iter_end函數獲取指向該對象的子迭代器對象和結束迭代器。使用一個內部循環來遍歷每個子項,并通過json_object_iter_peek_name函數判斷當前子項是名稱還是價格,并使用json_object_get_string或json_object_get_double函數獲取子項的字符串或雙精度浮點數值。

最后,我們使用json_object_put函數釋放json_object對象的內存。