在C語言中,枚舉類型很常見。這種類型可以將值表示為一組離散的常量,它們通常被映射到整數值。當我們需要將一個枚舉值轉換為一個JSON對象時,可以使用以下代碼:
#include#include #include #include enum Fruit { APPLE, BANANA, ORANGE }; json_t* fruit_to_json(enum Fruit fruit) { char* str_fruit; switch (fruit) { case APPLE: str_fruit = "apple"; break; case BANANA: str_fruit = "banana"; break; case ORANGE: str_fruit = "orange"; break; default: return NULL; } json_t* j_fruit = json_string(str_fruit); return j_fruit; } int main() { json_t* j_obj = json_object(); json_object_set(j_obj, "fruit", fruit_to_json(BANANA)); char* j_str = json_dumps(j_obj, JSON_COMPACT); printf("%s\n", j_str); free(j_str); json_decref(j_obj); return 0; }
首先,我們定義了一個名為“Fruit”的枚舉類型,其中包含了三個常量:APPLE,BANANA,ORANGE。然后,我們定義了一個fruit_to_json函數,它接受一個“Fruit”類型的枚舉值,并將其轉換為一個JSON對象。在該函數中,我們使用一個switch語句將枚舉值映射到一個字符串。最后,我們將該字符串轉換為一個json_t類型的對象,并返回它。 在main函數中,我們創建了一個名為“j_obj”的JSON對象,并向其添加了一個“fruit”屬性,該屬性的值通過調用fruit_to_json函數來獲取。然后,我們使用json_dumps函數將整個JSON對象轉換為一個字符串,并將其打印出來。 需要注意的是,我們在程序結束時使用了json_decref函數來釋放我們創建的json_t對象。這是非常重要的,因為它可以防止內存泄漏。