在C語言中,我們常常需要通過程序來生成JSON數據,因為JSON已經成為了現代應用程序中數據交換和存儲的事實標準。這就需要我們學習如何在C語言中返回JSON類型的數據。
#include <stdio.h> #include <stdlib.h> #include <jansson.h> int main() { json_t *root = json_object(); json_object_set_new(root, "name", json_string("Tom")); json_object_set_new(root, "age", json_integer(18)); json_object_set_new(root, "hobbies", json_array()); json_array_append_new(json_object_get(root, "hobbies"), json_string("reading")); json_array_append_new(json_object_get(root, "hobbies"), json_string("swimming")); printf("%s\n", json_dumps(root, JSON_INDENT(2))); json_decref(root); return 0; }
上面的代碼會輸出以下JSON格式的數據:
{ "name": "Tom", "age": 18, "hobbies": [ "reading", "swimming" ] }
在上面的代碼中,我們使用了Jansson庫來生成JSON數據,Jansson是一個C語言開發的輕量級JSON庫,它提供了非常簡單的API來生成、解析和修改JSON數據。
在main函數中,我們首先創建了一個json_t類型的對象root,這個對象對應生成的JSON數據的根節點。然后通過json_object_set_new函數向root對象中添加屬性,包括name、age和hobbies。其中,name和age屬性使用了json_string和json_integer函數來分別生成string和number類型的屬性,hobbies屬性使用了json_array函數來生成一個數組。
在添加完屬性后,我們使用json_dumps函數將root對象中的JSON數據轉換為字符串輸出,并指定了JSON_INDENT(2)選項來對輸出的數據進行格式化。最后,通過json_decref函數釋放root對象的內存。
在實際的應用中,我們可以將上面的代碼封裝為一個函數,以便于在其他地方調用并生成需要的JSON數據類型。