在C語言中,將一個結(jié)構(gòu)體或者變量轉(zhuǎn)換為JSON字符串是常見的操作。但是在轉(zhuǎn)換過程中,有時候會出現(xiàn)雙引號被轉(zhuǎn)義為反斜杠"的情況,不方便后續(xù)處理。此時,可以將JSON中的雙引號改為單引號進行處理。
//將C語言結(jié)構(gòu)體轉(zhuǎn)為JSON字符串 #include <stdio.h> #include <stdlib.h> #include <jansson.h> typedef struct{ char name[20]; char gender[10]; int age; double height; }Person; int main(){ Person p1 = {"Alice", "女", 18, 165.5}; json_t *root = json_object(); json_object_set_new(root, "name", json_string(p1.name)); json_object_set_new(root, "gender", json_string(p1.gender)); json_object_set_new(root, "age", json_integer(p1.age)); json_object_set_new(root, "height", json_real(p1.height)); const char *result = json_dumps(root, JSON_INDENT(2)); printf("%s\n", result); json_decref(root); free(result); return 0; }
在執(zhí)行結(jié)果中,我們發(fā)現(xiàn)JSON字符串中的雙引號被轉(zhuǎn)義為了反斜杠",這對后續(xù)處理不太方便。
{ "name": "Alice", "gender": "\u5973", "age": 18, "height": 165.500000 }
此時,我們可以將JSON中的雙引號改為單引號,這樣就不會出現(xiàn)雙引號被轉(zhuǎn)義的情況了。具體操作方法如下:
const char *result = json_dumps(root, JSON_INDENT(2) | JSON_ESCAPE_SINGLEQUOTE);
在將結(jié)構(gòu)體或變量轉(zhuǎn)為JSON字符串的過程中,我們可以根據(jù)需要選擇是否將JSON中的雙引號改為單引號,這樣可以方便后續(xù)的處理。
下一篇了解值小于1時的伸縮