C JSON序列化時,若字符串中包含特殊字符(例如引號、反斜杠等),需要進行轉義。以下是一些常見的轉義字符:
字符 轉義序列 " \" \ \\ / \/ \b \b \f \f \n \n \r \r \t \t \uxxxx Unicode字符
以字符串"Hello World!"為例,使用cJSON庫進行序列化:
cJSON* root = cJSON_CreateObject(); cJSON_AddStringToObject(root, "message", "Hello World!"); char* json_str = cJSON_Print(root);
則json_str的值為:
{"message":"Hello World!"}
現在假設字符串為"Hello \t World!":
cJSON* root = cJSON_CreateObject(); cJSON_AddStringToObject(root, "message", "Hello \t World!"); char* json_str = cJSON_Print(root);
此時json_str的值為:
{"message":"Hello \\t World!"}
由于轉義字符\t會被轉義為兩個字符\和t,因此需要在原字符前加上一個反斜杠來進行轉義。
如果需要包含Unicode字符,可使用cJSON_AddItemToObjectCS函數:
cJSON* root = cJSON_CreateObject(); cJSON_AddItemToObjectCS(root, "message", cJSON_CreateString("\u4e2d\u6587")); char* json_str = cJSON_Print(root);
則json_str的值為:
{"message":"中文"}
總之,在C JSON序列化中,轉義字符串非常重要,否則可能會引起錯誤或解析問題。