C語言的json序列化通常使用第三方庫,而指針類的序列化比較困難,需要使用策略模式。在序列化指針時,我們需要定義一個策略類,分別對指向對象、數組等不同類型的指針進行序列化處理。在使用C語言對類進行json序列化時,常常會遇到反斜杠這個特殊字符。
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <stdbool.h> #include <json-c/json.h> typedef struct { int id; char name[20]; } Student; int main() { Student s = { .id = 1, .name = "Mike" }; json_object *new_student = json_object_new_object(); json_object_object_add(new_student, "id", json_object_new_int(s.id)); json_object_object_add(new_student, "name", json_object_new_string(s.name)); const char *json_str = json_object_to_json_string(new_student); printf("%s\n", json_str); }
在運行上面的代碼后,我們會發現在name的值之前多出了一個反斜杠。這是因為json-c庫默認對字符串進行轉義,所以需要在調用json_object_new_string函數時添加一個類別信息。
json_object_new_string_len(s.name, strlen(s.name))
其中,第二個參數表示字符串的長度,這樣就可以在不預期添加轉義字符的情況下,正確地進行json序列化。
上一篇python 的基本操作
下一篇vue中沒有let