C語言中的字符串處理一直是一個比較麻煩的問題,需要注意字符數組的長度、字符串結尾的'\0'字符等等。不過好在有許多成熟的字符串處理庫可以使用,如strtok、strstr、strchr等等。不過當需要將C字符串轉換成JSON格式字符串時,我們往往需要自己編寫轉換器來進行處理了。
//將C字符串轉換成JSON格式的字符串 char* cstring_to_json(char* cstring) { if (cstring == NULL) { return NULL; } char* result = (char*) malloc(strlen(cstring) * 2 + 3); if (result == NULL) { return NULL; } char* p = result; *p++ = '"'; while (*cstring != 0) { switch (*cstring) { case '\"': *p++ = '\\'; *p++ = '\"'; break; case '\\': *p++ = '\\'; *p++ = '\\'; break; case '\b': *p++ = '\\'; *p++ = 'b'; break; case '\f': *p++ = '\\'; *p++ = 'f'; break; case '\n': *p++ = '\\'; *p++ = 'n'; break; case '\r': *p++ = '\\'; *p++ = 'r'; break; case '\t': *p++ = '\\'; *p++ = 't'; break; default: *p++ = *cstring; break; } cstring++; } *p++ = '"'; *p++ = '\0'; return result; }
以上代碼中,我們將C字符串中的特殊字符進行了轉義,如\x22代表"字符、\x5C代表\字符、\x08代表退格字符等等。需要注意的是,為了能夠在JSON中表示字符串,我們在字符串開頭和結尾加上了"字符。
當然,將JSON格式字符串轉換成C字符串也是可以做到的,不過這個還是留給讀者自行研究、實現了。