在使用C語言開發的過程中,我們有時候需要將一些實體類轉換成JSON格式,以便于傳輸和處理。JSON(JavaScript Object Notation)是一種輕量級的數據交換格式,而在C語言中,我們可以使用一些第三方庫來實現這個功能。
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <jansson.h> typedef struct { int id; char name[20]; double score; } Student; int main() { Student s = {1, "Tom", 89.5}; json_t *root = json_object(); json_object_set_new(root, "id", json_integer(s.id)); json_object_set_new(root, "name", json_string(s.name)); json_object_set_new(root, "score", json_real(s.score)); char *output = json_dumps(root, JSON_INDENT(4)); printf("%s", output); json_decref(root); free(output); return 0; }
在上面的代碼中,我們定義了一個結構體Student,其中包含了三個屬性:id、name和score。我們使用jansson這個第三方庫創建了一個JSON對象,并對其進行了三個屬性的設置,最后使用json_dumps函數將JSON對象轉換成了字符串并輸出。
在實際的工程開發中,我們可以將此代碼進行封裝,以便于在不同的地方調用,例如:
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <jansson.h> typedef struct { int id; char name[20]; double score; } Student; char* toJson(Student s) { json_t *root = json_object(); json_object_set_new(root, "id", json_integer(s.id)); json_object_set_new(root, "name", json_string(s.name)); json_object_set_new(root, "score", json_real(s.score)); char *output = json_dumps(root, JSON_INDENT(4)); json_decref(root); return output; } int main() { Student s = {1, "Tom", 89.5}; char *output = toJson(s); printf("%s", output); free(output); return 0; }
在此封裝后,我們可以方便地調用toJson函數,將任何一個Student對象轉換成JSON字符串。