在C語言中,JSON解析是一項非常重要的任務。而在JSON中,\r和\n是常見的特殊字符,需要特殊處理。
/* ** 在JSON中,\r和\n是特殊字符,需要特殊處理 */ cJSON *json = cJSON_Parse(data); char *str = cJSON_Print(json); char *p,*q; p = str; q = p; while(*p != '\0') { if(*p == '\r' || *p == '\n') p++; //跳過\r和\n else { if(p != q) *q = *p; //將不是\r和\n的字符放到前面的位置 p++; q++; //移動指針 } } *q = '\0'; //字符串結尾加上\0 cJSON_Delete(json);
在上面的代碼中,我們首先使用cJSON_Parse函數將JSON字符串解析成cJSON類型的數據,再使用cJSON_Print函數將cJSON類型的數據轉化為字符串,并存儲在str指針變量中。
接著,我們對字符串進行處理。首先將p和q指針分別指向字符串的開頭,然后遍歷整個字符串。如果當前字符是\r或\n,則直接跳過;否則,將當前字符放到q指針所指向的位置,并將p和q指針都向后移動一位。
最后,將字符串的結尾加上\0,表示字符串的結束。
最后記得使用cJSON_Delete函數釋放cJSON類型的數據。