C语言 使用正则表达式 封装解析json工具类
时间: 2023-10-17 22:10:26 浏览: 173
可以使用C语言中的正则表达式库PCRE(Perl Compatible Regular Expressions)来解析JSON字符串。下面是一个简单的示例代码:
```c
#include <stdio.h>
#include <string.h>
#include <pcre.h>
#define OVECCOUNT 30
int parse_json(const char *json_str) {
int rc;
const char *error;
int erroffset;
int ovector[OVECCOUNT];
char key[128], value[128];
pcre *re = pcre_compile("\"([^\"]+)\": ?\"([^\"]+)\"", 0, &error, &erroffset, NULL);
if (!re) {
printf("pcre_compile failed (offset: %d), error message: %s\n", erroffset, error);
return -1;
}
const char *p = json_str;
while (*p) {
rc = pcre_exec(re, NULL, p, strlen(p), 0, 0, ovector, OVECCOUNT);
if (rc < 0) {
break;
}
pcre_copy_substring(json_str, ovector, rc, 1, key, sizeof(key));
pcre_copy_substring(json_str, ovector, rc, 2, value, sizeof(value));
printf("%s: %s\n", key, value);
p += ovector[1];
}
pcre_free(re);
return 0;
}
int main() {
const char *json_str = "{\"name\": \"John\", \"age\": 30}";
parse_json(json_str);
return 0;
}
```
上述代码使用PCRE库编译了一个正则表达式,用于匹配JSON字符串中的键值对,然后使用pcre_exec函数进行匹配。匹配成功后,使用pcre_copy_substring函数提取键和值,并输出到控制台。
阅读全文