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

c json對象轉字符串有換行符

阮建安2年前12瀏覽0評論

在使用 C 語言進行 JSON 解析/生成的過程中,有時需要將 JSON 對象轉換為字符串格式進行保存或網絡傳輸。但是,有些情況下我們可能會發現轉換出來的 JSON 字符串中存在換行符,這就會導致后續處理出現問題。下面我們來看一些可能導致換行符出現的代碼:

// 準備 JSON 對象
cJSON* root = cJSON_CreateObject();
cJSON_AddStringToObject(root, "name", "Tom");
cJSON_AddNumberToObject(root, "age", 25);
// JSON 轉字符串,不帶縮進
char* str = cJSON_PrintUnformatted(root);
printf("Unformatted string: \n%s\n", str);
// JSON 轉字符串,帶縮進
char* str = cJSON_Print(root);
printf("Formatted string: \n%s\n", str);

上述代碼中,我們使用了 cJSON 庫來構建 JSON 對象,并調用了 cJSON_PrintUnformatted() 和 cJSON_Print() 函數將 JSON 轉換為字符串格式。其中,cJSON_PrintUnformatted() 函數不帶縮進,cJSON_Print() 函數則會在輸出的字符串中使用縮進符號(通常是空格或制表符)。

然而,注意到上述輸出中均存在換行符。造成這種情況的原因在于,cJSON_PrintUnformatted() 和 cJSON_Print() 函數在每行結尾處都會添加一個換行符。那么如果我們想要去掉這些換行符呢?可以借助下面這個函數:

void remove_newline(char* str)
{
for (int i = 0; str[i] != '\0'; i++) {
if (str[i] == '\n') {
str[i] = ' ';
}
}
}

這個函數很簡單,就是遍歷字符串,如果發現一個換行符就將其替換為空格。使用方法也很簡單,只需要在 cJSON_PrintUnformatted() 或 cJSON_Print() 的返回值上調用這個函數即可:

char* str = cJSON_PrintUnformatted(root);
remove_newline(str);
printf("Unformatted string: \n%s\n", str);

現在輸出的字符串中就沒有換行符了。這個方法同樣適用于 cJSON_Print() 函數。