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結構體中存儲的字段名和字段值打印出來。