以C語言從本地接口取得JSON數(shù)據(jù)
C語言可以通過一些第三方庫來解析和讀取JSON數(shù)據(jù),例如 cJSON 或者 Jansson。
首先,需要通過標(biāo)準(zhǔn)C庫的API來打開文件以獲取JSON數(shù)據(jù)。下面的代碼演示了如何打開并讀取一個(gè)名為 example.json 文件。
#include輸出的內(nèi)容將是 JSON 數(shù)據(jù)。 接下來,使用 JSON 庫來解析 JSON 數(shù)據(jù)。如下所示的代碼演示了如何使用 cJSON 庫來解析 JSON 數(shù)據(jù)。#include int main() { FILE *fp; char c; fp = fopen("example.json", "r"); //打開 example.json 文件 if (fp == NULL) { printf("文件不存在!"); exit(1); } while (1) { c = fgetc(fp); //逐個(gè)字符讀取文件 if (feof(fp)) { //文件結(jié)尾 break; } printf("%c", c); //打印文件內(nèi)容 } fclose(fp); //關(guān)閉文件 return 0; }
#include現(xiàn)在,該代碼應(yīng)該能夠正確地解析 JSON 數(shù)據(jù)并以適當(dāng)?shù)姆绞捷敵銎鋬?nèi)容。 cJSON 庫還提供了許多其他功能,例如修改和創(chuàng)建 JSON 數(shù)據(jù)。在使用時(shí),請(qǐng)參閱其文檔以了解其功能。#include #include "./cJSON.c" //用于解析 JSON 數(shù)據(jù)的庫 char *readJSONFile(char *filename) { FILE *fptr; long length; char *data; fptr = fopen(filename, "rb"); //以字節(jié)方式打開文件 if (fptr == NULL) { printf("文件不存在!"); exit(1); } fseek(fptr, 0, SEEK_END); //將指針定位到文件末尾 length = ftell(fptr); //獲取文件長(zhǎng)度 data = (char*)malloc(length + 1); //給 data 分配內(nèi)存 memset(data, 0, length + 1); //初始化 data fseek(fptr, 0, SEEK_SET); //將指針定位到文件開頭 fread(data, 1, length, fptr); //讀取文件數(shù)據(jù)到 data 中 fclose(fptr); //關(guān)閉文件 return data; } int main() { char *data = NULL; //指向 JSON 數(shù)據(jù)的指針 cJSON *json = NULL; //指向 cJSON 數(shù)據(jù)的指針 data = readJSONFile("example.json"); //讀取 JSON 數(shù)據(jù)文件 json = cJSON_Parse(data); //解析 JSON 數(shù)據(jù) //獲取 JSON 數(shù)據(jù)的值 cJSON *name = cJSON_GetObjectItem(json, "name"); cJSON *age = cJSON_GetObjectItem(json, "age"); cJSON *hobbies = cJSON_GetObjectItem(json, "hobbies"); printf("Name: %s\n", name->valuestring); printf("Age: %d\n", age->valueint); printf("Hobbies: %s\n", cJSON_PrintUnformatted(hobbies)); cJSON_Delete(json); free(data); return 0; }
上一篇vue制作紅包雨
下一篇python 歡樂斗地主