当先锋百科网

首页 1 2 3 4 5 6 7

C语言作为一种强大的编程语言,可以处理各种各样的数据,包括JSON格式的数据。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它是基于JavaScript语言的一个子集,易于人们阅读和编写。在C语言中,我们可以使用一些库来解析单层的JSON数据。下面是一段解析JSON数据的代码:

#include &ltstdio.h&gt
#include &ltstdlib.h&gt
#include &ltstring.h&gt
#include &ltctype.h&gt
#define MAX_JSON_STRING 1024
typedef struct{
char name[MAX_JSON_STRING];
char value[MAX_JSON_STRING];
}JsonField;
int parse_json(char *json_string, JsonField *json_fields, int n)
{
int cnt = 0, i = 0, j = 0;
char *p = NULL;
while (json_string[i] != '\0' && cnt< n) {
if (json_string[i] == '\"') {
j = 0;
i++;
p = json_fields[cnt].name;
while (json_string[i] != '\"') {
p[j++] = json_string[i++];
}
p[j] = '\0';
if (json_string[++i] != ':') {
continue;
} else {
i++;
}
if (json_string[i] != '\"') {
continue;
} else {
i++;
}
j = 0;
p = json_fields[cnt].value;
while (json_string[i] != '\"') {
p[j++] = json_string[i++];
}
p[j] = '\0';
cnt++;
}
i++;
}
return cnt;
}
int main()
{
char json_string[MAX_JSON_STRING] = "{\"id\":\"1234\",\"name\":\"Tom\",\"age\":\"18\",\"gender\":\"male\",\"address\":\"BeiJing\"}";
JsonField json_fields[5];
int cnt = parse_json(json_string, json_fields, 5);
for (int i = 0; i< cnt; i++) {
printf("%s : %s\n", json_fields[i].name, json_fields[i].value);
}
return 0;
}

在这段代码中,我们使用了一个JsonField的结构体来存储JSON数据中的字段名和字段值,然后使用parse_json函数解析JSON数据字符串,并将解析的结果存入JsonField结构体中。

在parse_json函数中,我们遍历JSON数据字符串,当遇到双引号时,就开始提取字段名和字段值,然后将其存入JsonField结构体中。最后将JsonField结构体中存储的字段名和字段值打印出来。