C語言中的JSON是一種輕量級的數(shù)據(jù)交換格式,以文本形式存儲,可讀性強,易于理解和處理。在JSON中,數(shù)組是一種重要的數(shù)據(jù)類型,可以包含多個元素。JSON的解析也成為了C語言開發(fā)中的一項重要任務(wù)。在本文中,我們將介紹如何解析C JSON二維數(shù)組。
#include <stdio.h> #include <string.h> #include <jansson.h> int main() { const char *json_str = "[[1, 2], [3, 4], [5, 6]]"; // JSON字符串 json_error_t error; json_t *root = json_loads(json_str, 0, &error); // 解析JSON字符串 if (!root) { printf("error: on line %d: %s\n", error.line, error.text); return 1; } int row = json_array_size(root); // 獲取JSON數(shù)組的行數(shù) int col = json_array_size(json_array_get(root, 0)); // 獲取JSON數(shù)組的列數(shù) printf("row=%d, col=%d\n", row, col); int i, j; for (i = 0; i < row; i++) { json_t *row_array = json_array_get(root, i); // 獲取一行數(shù)組 for (j = 0; j < col; j++) { int value = (int)json_integer_value(json_array_get(row_array, j)); // 獲取數(shù)組元素 printf("%d ", value); } printf("\n"); } json_decref(root); // 釋放JSON對象 return 0; }
在本代碼段中,我們使用了jansson庫(一個輕量級的C庫),并且手動創(chuàng)建了一個JSON字符串。然后,我們將JSON字符串加載到一個json_t對象中,并使用json_array_size()函數(shù)獲得數(shù)組的行數(shù)和列數(shù)。
接下來,我們使用一個for循環(huán)遍歷所有元素。在循環(huán)中,我們首先使用json_array_get()函數(shù)獲取二維數(shù)組中的一整行。然后,我們再使用json_array_get()函數(shù)獲取特定的數(shù)組元素,使用json_integer_value()函數(shù)獲取該元素的值,并將其打印到屏幕上。
最后,我們使用json_decref()釋放JSON對象,以防止內(nèi)存泄漏。在使用jansson庫解析JSON數(shù)據(jù)時,應(yīng)該始終記得為每個json_t對象調(diào)用json_decref()。