在使用C語言開發過程中,我們經常需要將C object轉化成json格式,以便于網絡傳輸和存儲。下面我們來看一下如何實現這個轉化過程。
// 假設我們有一個C object如下: typedef struct { int id; char name[20]; double score; } student; student s1 = { 1001, "Tom", 87.5 }; // 下面是將C object轉化成json格式的代碼: #include <stdio.h>#include <stdlib.h>#include <string.h>#include <json-c/json.h>char *c_object_to_json(student *stu) { json_object *json_stu = json_object_new_object(); json_object_object_add(json_stu, "id", json_object_new_int(stu->id)); json_object_object_add(json_stu, "name", json_object_new_string(stu->name)); json_object_object_add(json_stu, "score", json_object_new_double(stu->score)); return (char *)json_object_to_json_string(json_stu); } int main() { char *json_str = c_object_to_json(&s1); printf("%s\n", json_str); free(json_str); return 0; }
上面的代碼首先使用json-c庫中的json_object_new_object()函數創建了一個json對象,然后使用json_object_object_add()函數將C object的字段依次添加到這個json對象中。最后使用json_object_to_json_string()函數將json對象轉化成字符串返回。
這個轉化過程比較簡單,但通常需要注意以下幾點:
- json-c庫需要安裝,一般在Ubuntu等Linux發行版中可以通過apt命令安裝;
- 在使用json_object_to_json_string()函數返回的json字符串使用之后,需要使用free函數釋放字符串所占用的內存。