在C語言中,序列化是將內存中的數據結構轉換為可存儲或傳輸的格式的過程。JSON是一種常見的序列化數據的格式,在C語言中,我們可以使用第三方庫來實現JSON的序列化和反序列化功能。
當我們想要序列化一個數組時,可以使用以下代碼:
#include <stdio.h> #include <jansson.h> int main() { int arr[5] = {1, 2, 3, 4, 5}; json_t *json_arr = json_array(); for(int i = 0; i < 5; i++) { json_array_append_new(json_arr, json_integer(arr[i])); } char *json_str = json_dumps(json_arr, JSON_PRESERVE_ORDER | JSON_INDENT(4)); printf("%s\n", json_str); free(json_str); json_decref(json_arr); return 0; }
以上代碼將一個整型數組序列化為JSON字符串,并輸出到控制臺。我們可以看到輸出的字符串為:
[ 1, 2, 3, 4, 5 ]
如果我們想要反序列化該JSON字符串,可以使用以下代碼:
int main() { const char *json_str = "[1, 2, 3, 4, 5]"; json_error_t error; json_t *json_arr = json_loads(json_str, 0, &error); if(!json_arr) { printf("error: on line %d: %s\n", error.line, error.text); return 1; } if(!json_is_array(json_arr)) { printf("error: root element is not an array\n"); json_decref(json_arr); return 1; } size_t size = json_array_size(json_arr); int arr[size]; for(int i = 0; i < size; i++) { json_t *value = json_array_get(json_arr, i); if(!json_is_integer(value)) { printf("error: element %d is not an integer\n", i); json_decref(json_arr); return 1; } arr[i] = json_integer_value(value); } json_decref(json_arr); printf("array: "); for(int i = 0; i < size; i++) { printf("%d ", arr[i]); } printf("\n"); return 0; }
以上代碼將上述JSON字符串反序列化為一個整型數組,并輸出到控制臺。我們可以看到輸出的數組為:
array: 1 2 3 4 5
以上就是在C語言中序列化數組為JSON格式并進行反序列化的方法。
上一篇c 序列化json嵌套
下一篇html定時代碼