使用C語言編寫程序時,有時候需要將數據以JSON格式返回給客戶端。而有些情況下,由于數據量較大,一次返回所有數據會導致傳輸時間過長,甚至會使客戶端程序崩潰。因此,一種解決方法就是將數據一條一條地返回。
#include <stdio.h> #include <stdlib.h> #include <jansson.h> int main() { int data[] = {1, 2, 3, 4, 5}; size_t i, len = sizeof(data) / sizeof(data[0]); json_t *root = json_array(); for (i = 0; i < len; i++) { json_array_append_new(root, json_integer(data[i])); char *json_str = json_dumps(root, JSON_INDENT(4)); printf("%s\n", json_str); free(json_str); } json_decref(root); return 0; }
以上是一段簡單的代碼示例。首先,在示例代碼中定義了一個包含數據的整型數組。接著,使用libjansson庫的json_array()函數創建一個JSON數組對象,并通過json_array_append_new()函數依次將數組中的每個元素加入到JSON數組對象中。
然后,使用json_dumps()函數將JSON數組對象轉換為JSON字符串,再通過printf()函數將JSON字符串以一條一條的形式返回。在返回之后,需要使用free()函數釋放先前分配的JSON字符串的內存空間。
最后,通過調用json_decref()函數釋放JSON數組對象的內存空間。
總之,將數據一條一條地返回可以減少傳輸量和時間,提高程序的效率。