C語言在處理JSON數據時,經常需要取JSON內的數組值。下面是一個簡單的示例,演示了如何使用C語言取得JSON內的數組值。
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <jansson.h> int main(int argc, char **argv) { char *json_str = "[1,2,3]"; json_t *root; json_error_t error; root = json_loads(json_str, 0, &error); if(!root) { fprintf(stderr, "error: on line %d: %s\n", error.line, error.text); return 1; } if(!json_is_array(root)) { fprintf(stderr, "error: root is not an array\n"); json_decref(root); return 1; } size_t index; json_t *value; json_array_foreach(root, index, value) { if(!json_is_integer(value)) { fprintf(stderr, "error: value is not an integer\n"); json_decref(root); return 1; } int num = json_integer_value(value); printf("value %zu: %d\n", index, num); } json_decref(root); return 0; }
上面的代碼演示了如何使用json_loads()函數從JSON字符串中加載JSON對象,然后判斷是否為JSON數組,遍歷數組元素,并分別將每一個元素轉換為整數類型進行輸出。
這里提到,json_loads()函數的第二個參數為flags,一般設置為0即可,最后一個json_error_t參數用于存儲錯誤信息。
而最核心的是使用json_array_foreach()函數遍歷了JSON數組。該函數需要傳入兩個參數:JSON數組對象和回調函數。其中回調函數中有三個參數:元素下標、元素值以及回調函數上下文(此處為NULL)。對于每一個元素,回調函數都會被調用一次進行處理。
最后,需要注意的是,不同的JSON使用庫,其API可能略有不同。但總的來說,取JSON內的數組值的方法大同小異。