色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

c 序列化 數組 json

錢瀠龍2年前8瀏覽0評論

在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格式并進行反序列化的方法。