在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格式數據。
上一篇c js傳遞json數據
下一篇python 文字轉數值