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

c json遞歸問題

錢浩然1年前8瀏覽0評論

在C語言中使用JSON庫來處理JSON格式的數據時,經常會遇到遞歸問題。JSON格式數據通常有嵌套結構,因此需要通過遞歸方式對其進行讀取和處理。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <jansson.h>
void recurse(json_t *root) {
if (!root) {
return;
}
switch(json_typeof(root)) {
case JSON_OBJECT:
{
const char *key;
json_t *value;
json_object_foreach(root, key, value) {
printf("Key: %s ", key);
recurse(value);
}
}
break;
case JSON_ARRAY:
{
size_t index;
json_t *value;
json_array_foreach(root, index, value) {
recurse(value);
}
}
break;
case JSON_STRING:
{
const char* value = json_string_value(root);
printf("Value: %s\n", value);
}
break;
case JSON_INTEGER:
{
int64_t value = json_integer_value(root);
printf("Value: %ld\n", value);
}
break;
case JSON_REAL:
{
double value = json_real_value(root);
printf("Value: %f\n", value);
}
break;
case JSON_TRUE:
{
printf("Value: true\n");
}
break;
case JSON_FALSE:
{
printf("Value: false\n");
}
break;
case JSON_NULL:
{
printf("Value: null\n");
}
break;
default:
break;
}
}
int main() {
char *json_string = "{ \"name\": \"John Doe\", \"age\": 42, \"isMarried\": true, \"address\": { \"street\": \"123 Main St.\", \"city\": \"Anytown\", \"state\": \"NY\"}, \"phoneNumbers\": [ \"123-456-7890\", \"234-567-8901\", \"345-678-9012\" ] }";
json_error_t error;
json_t *root = json_loads(json_string, 0, &error);
if (!root) {
fprintf(stderr, "error: on line %d: %s\n", error.line, error.text);
return 1;
}
recurse(root);
json_decref(root);
return 0;
}

上面的代碼展示了如何遞歸遍歷JSON對象,包括對象、數組、字符串、整數、浮點數、布爾值和NULL值。運行程序,可以輸出JSON格式數據中每個鍵值對的信息。

總之,在C語言中處理JSON數據需要使用遞歸方法,特別是對于復雜的嵌套結構。掌握遞歸遍歷JSON對象的方法,可以更方便地解析和處理JSON格式數據。