在 C 語言中,可以使用正則表達式獲取 JSON 格式的特定字段值。以下是實現該功能的代碼示例:
#include <stdio.h> #include <regex.h> int get_json_value(const char *json_str, const char *key, char *value) { regex_t reg; regmatch_t matches[2]; char pattern[50]; sprintf(pattern, "\"%s\":\"([^\"]+)\"", key); if (regcomp(®, pattern, REG_EXTENDED|REG_NEWLINE) != 0) { return -1; } if (regexec(®, json_str, 2, matches, 0) == 0) { int len = matches[1].rm_eo - matches[1].rm_so; strncpy(value, json_str + matches[1].rm_so, len); value[len] = '\0'; regfree(®); return 0; } regfree(®); return -1; } int main() { char json_str[] = "{\"id\":\"123\",\"name\":\"John Doe\",\"age\":30}"; char name[50]; if (get_json_value(json_str, "name", name) == 0) { printf("Name is %s\n", name); } return 0; }
該函數使用了 regex.h 庫的正則表達式功能,在 JSON 格式的字符串中匹配指定的字段,并返回其值。
函數參數說明:
- json_str:JSON 格式的字符串
- key:要匹配的字段名
- value:字段值輸出緩沖區
函數返回值說明:
- 0:成功獲取字段值,并存儲在 value 中
- -1:匹配失敗或出錯
示例中使用的是靜態的 JSON 字符串,在實際開發中應該從網絡或文件中讀取 JSON 數據,并動態提取所需字段。