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

c 解析json多嵌套

吉茹定1年前8瀏覽0評論

在使用C語言解析JSON數據時,可能會遇到多層嵌套的情況,需要使用遞歸來處理。以下是一個示例:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <jansson.h>
void handle_json(json_t *json) {
if(json_is_object(json)) {
const char *key;
json_t *value;
json_object_foreach(json, key, value) {
printf("%s: ", key);
handle_json(value);
}
}
else if(json_is_array(json)) {
int i;
size_t size = json_array_size(json);
for(i = 0; i < size; i++) {
handle_json(json_array_get(json, i));
}
}
else if(json_is_null(json)) {
printf("null\n");
}
else if(json_is_boolean(json)) {
int b = json_boolean_value(json);
printf("%s\n", b ? "true" : "false");
}
else if(json_is_integer(json)) {
int num = json_integer_value(json);
printf("%d\n", num);
}
else if(json_is_real(json)) {
double num = json_real_value(json);
printf("%f\n", num);
}
else if(json_is_string(json)) {
const char *str = json_string_value(json);
printf("%s\n", str);
}
}
int main() {
const char *json_str = "{\"a\": 1, \"b\": [2, 3], \"c\": {\"d\": \"hello\", \"e\": [4.5, 6.7]}}";
json_error_t error;
json_t *json = json_loads(json_str, 0, &error);
if(!json) {
printf("error: on line %d: %s\n", error.line, error.text);
return 1;
}
handle_json(json);
json_decref(json);
return 0;
}

上述代碼中,handle_json函數用于處理JSON數據。如果JSON數據是一個對象,則遍歷每個鍵值對,并遞歸調用handle_json函數;如果JSON數據是一個數組,則遍歷數組中的每個元素,并遞歸調用handle_json函數;如果JSON數據是null、布爾值、整數、實數或字符串,則直接輸出。

在主函數中,使用json_loads函數將JSON字符串解析為json_t對象。如果解析失敗,則輸出錯誤信息。最后調用handle_json函數處理JSON對象,并釋放資源。

以上就是使用C語言解析JSON多嵌套數據的方法。