色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

c 把類序列化json有反斜杠

方一強1年前8瀏覽0評論

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序列化。