在使用C語言解析JSON串的時候,遇到的一個常見問題就是反轉義(消除反斜杠)。
JSON串中的字符串常常被加上反斜杠轉義,例如:“\\"代表單個反斜杠,“\\n”代表換行符,“\\t”代表制表符等,這些反斜杠雖然在JSON解析時能夠正確識別,但在實際應用中卻會造成很多麻煩。
當我們獲取到JSON串之后,需要將里面所有的反轉義去除,以便于后續處理。
#include <stdio.h> #include <string.h> void remove_backslash(char *str) { int len = strlen(str); int i = 0, j = 0; while (i< len) { if (str[i] == '\\' && (i+1< len)) { i++; } str[j++] = str[i++]; } str[j] = '\0'; } int main() { char *json = "{\"name\":\"John\\\", \"age\":30}"; remove_backslash(json); printf("%s\n", json); return 0; }
以上是一個簡單的反轉義函數示例,我們在函數中遍歷輸入JSON串的字符,當遇到反斜杠時,直接忽略,并將其后一個字符加入新的字符串中。
這樣,我們就可以方便地使用反轉義后的JSON串進行下一步處理了。