C語言是一種廣泛應用于嵌入式系統開發、圖形圖像處理等領域的高級編程語言,而JSON是一種輕量級的數據交換格式。當我們需要將C結構體對象轉換為JSON格式數據時,就需要使用C序列化為JSON的技術。下面我們來探討一下這種技術的實現方法。
#include <stdio.h> #include <jansson.h> typedef struct { char* name; int age; char* phone; } Person; int main() { Person p = {"Tom", 28, "123456789"}; json_t* json_obj = json_object(); // 創建一個json對象 json_object_set_new(json_obj, "name", json_string(p.name)); // 添加name屬性 json_object_set_new(json_obj, "age", json_integer(p.age)); // 添加age屬性 json_object_set_new(json_obj, "phone", json_string(p.phone)); // 添加phone屬性 char* json_str = json_dumps(json_obj, JSON_INDENT(2)); // 將json對象序列化為字符串 printf("%s\n", json_str); free(json_str); json_decref(json_obj); return 0; }
首先,我們定義了一個名為Person的結構體,其中包含三個成員變量,分別是name、age和phone。接著我們引入了jansson庫,它是一個C語言實現的JSON庫,它提供了將C語言數據類型轉換為JSON格式的功能。
在main函數中,我們先創建了一個json對象json_obj,之后使用json_object_set_new函數為json_obj對象添加了name、age和phone屬性,這里需要注意的是,我們使用了對應的json類型函數,比如json_string來創建字符串類型的屬性值,json_integer來創建數字類型的屬性值。在設置屬性值時,我們使用了結構體實例p的成員變量作為屬性值,這里需要注意還需要進行一些類型轉換,比如將int類型轉換為json_integer類型。
最后,我們使用json_dumps函數將json對象序列化為字符串,并將其輸出。這里傳遞的第二個參數JSON_INDENT(2)表示輸出格式為縮進兩個空格的格式,方便查看。
上一篇atom支持vue提示
下一篇c 庫 json庫函數