C语言作为一种强大的编程语言,可以处理各种各样的数据,包括JSON格式的数据。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它是基于JavaScript语言的一个子集,易于人们阅读和编写。在C语言中,我们可以使用一些库来解析单层的JSON数据。下面是一段解析JSON数据的代码:
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> #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结构体中存储的字段名和字段值打印出来。