JSON是一種輕量級(jí)的數(shù)據(jù)交換格式,常用于前后端數(shù)據(jù)傳遞,在C語言中循環(huán)讀取JSON數(shù)據(jù)庫是一項(xiàng)常見的任務(wù)。下面我們來討論如何實(shí)現(xiàn)它。
首先需要用到j(luò)son-c這個(gè)開源庫,它提供了在C語言中解析和生成JSON數(shù)據(jù)的函數(shù)。
#include <stdio.h> #include <json-c/json.h> int main() { char *json_str = "{\"name\":\"Tom\",\"age\":20}"; json_object *json_data = json_tokener_parse(json_str); enum json_type type; json_object_object_foreach(json_data, key, val) { type = json_object_get_type(val); if(type == json_type_int) { printf("%s: %d\n", key, json_object_get_int(val)); } else if(type == json_type_string) { printf("%s: %s\n", key, json_object_get_string(val)); } } return 0; }
以上代碼演示了如何循環(huán)讀取JSON數(shù)據(jù)的每個(gè)鍵值對(duì)。首先定義一個(gè)JSON字符串,然后使用json_tokener_parse函數(shù)將其轉(zhuǎn)換成JSON對(duì)象json_data。接著使用json_object_object_foreach函數(shù)循環(huán)遍歷json_data中的每個(gè)鍵值對(duì)。在循環(huán)中,使用json_object_get_type函數(shù)獲得當(dāng)前值的類型,分別處理int和string類型的值。
如果從文件中讀取JSON數(shù)據(jù),可以使用以下代碼:
#include <stdio.h> #include <json-c/json.h> int main() { FILE *fp = fopen("data.json", "r"); if(fp == NULL) { printf("File open error\n"); return -1; } char c; char json_str[1024]; int i = 0; while((c = fgetc(fp)) != EOF) { json_str[i++] = c; } json_str[i] = '\0'; fclose(fp); json_object *json_data = json_tokener_parse(json_str); // 循環(huán)讀取JSON數(shù)據(jù)... return 0; }
以上代碼首先打開文件data.json,逐個(gè)字符讀取文件內(nèi)容,將JSON串存儲(chǔ)在json_str數(shù)組中。最后使用json_tokener_parse函數(shù)將其轉(zhuǎn)換成JSON對(duì)象json_data,接下來就可以使用json_object_object_foreach循環(huán)遍歷json_data中的每個(gè)鍵值對(duì)。
以上就是使用C語言循環(huán)讀取JSON數(shù)據(jù)庫的方法。JSON格式簡潔明了,容易閱讀和理解,因此越來越多的項(xiàng)目將其作為前后端數(shù)據(jù)傳輸?shù)臉?biāo)準(zhǔn)格式。掌握好JSON的讀取和生成技巧對(duì)于開發(fā)工作會(huì)有很大幫助。