在C語言中,截取Json字符串是非常常見的操作。Json字符串一般是由鍵值對組成的,其中的鍵和值用冒號(hào)(:)分隔,每組鍵值對之間用逗號(hào)(,)分隔。在進(jìn)行截取操作時(shí),我們需要根據(jù)Json字符串的語法規(guī)則對其進(jìn)行分析并找到所需要截取的位置。
#include#include #include char* json_substring(char* json, char* key) { char* start = strstr(json, key); char* end = strstr(start, ","); if (end == NULL) { end = strstr(start, "}"); } char* value = (char*)malloc(sizeof(char) * (end - start)); strncpy(value, start, end - start); return value; } int main() { char* json_str = "{\"name\":\"John\",\"age\":30,\"city\":\"New York\"}"; char* name = json_substring(json_str, "\"name\":\""); printf("%s", name); free(name); return 0; }
在上述代碼中,我們定義了一個(gè)名為json_substring的函數(shù),該函數(shù)接收兩個(gè)參數(shù):json和key。其中,json代表待截取的Json字符串,key代表需要截取的鍵名。
首先,在函數(shù)體中,使用C標(biāo)準(zhǔn)庫函數(shù)strstr在json字符串中查找第一次出現(xiàn)key字段的位置。接下來,使用strstr函數(shù)和逗號(hào)(,)或右花括號(hào)(})來獲取需要截取的字符串部分的結(jié)束位置。然后,使用字符串截取函數(shù)strncpy將獲取到的部分復(fù)制到另一個(gè)char數(shù)組中。最后,返回該數(shù)組。
在main函數(shù)中,我們定義了一個(gè)Json字符串,然后調(diào)用json_substring函數(shù)來獲取鍵名為"name"的值。值得注意的是,在調(diào)用完json_substring函數(shù)后,我們需要使用`free`來釋放內(nèi)存。