欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

c 正則解析json

劉姿婷2年前9瀏覽0評論

C語言中可以通過正則表達式來解析JSON格式的數(shù)據(jù)。JSON是一種輕量級的數(shù)據(jù)交換格式,經常被用于前后端數(shù)據(jù)交互。下面我們就來看看如何利用C語言中的正則表達式來解析JSON數(shù)據(jù)。

#include <stdio.h>
#include <regex.h>
/* JSON數(shù)據(jù) */
char* json = "{ \"name\": \"John\", \"age\": 24, \"city\": \"New York\" }";
int main()
{
/* 定義正則表達式 */
regex_t regex;
regmatch_t matches[10];
char *pattern = "\"([^\"]+)\"[[:space:]]*:[[:space:]]*([^,}]+)";
/* 編譯正則表達式 */
int ret = regcomp(®ex, pattern, REG_EXTENDED);
if (ret != 0)
{
printf("Error compiling regex\n");
return 1;
}
/* 匹配正則表達式 */
int submatch = 0;
while (regexec(®ex, json, 10, matches, 0) == 0)
{
submatch++;
/* 打印匹配到的鍵值對 */
for (int i=0; i<submatch*2; i+=2)
{
char buf[100];
int len = matches[i+1].rm_eo - matches[i+1].rm_so;
strncpy(buf, json+matches[i+1].rm_so, len);
buf[len] = '\0';
printf("%.*s: %.*s\n", matches[i].rm_eo-matches[i].rm_so,
json+matches[i].rm_so, len, buf);
}
/* 截取JSON字符串 */
json += matches[submatch*2-1].rm_eo;
}
/* 釋放資源 */
regfree(®ex);
return 0;
}

以上是一個簡單的正則表達式解析JSON的例子。代碼分為三個部分:

  1. 定義正則表達式,這里采用了一個模式字符串,用于匹配JSON格式中的鍵值對。
  2. 編譯正則表達式,如果編譯失敗則會輸出錯誤信息。
  3. 匹配JSON字符串,然后將每個鍵值對打印出來,同時截取JSON字符串。匹配結束后需要釋放正則表達式的資源。