JSON(JavaScript Object Notation,JavaScript對象表達式)是一種輕量級的數(shù)據(jù)交換格式。它由Douglas Crockford于2001年創(chuàng)建,可以簡化數(shù)據(jù)的交換和溝通。C語言可以使用第三方庫如cJSON來進行JSON文件的解析。
//cJSON解析JSON文件示例 #include <stdio.h>#include <cjson/cJSON.h>int main() { //讀取JSON文件(假設(shè)文件名為sample.json) FILE *fp = fopen("sample.json", "r"); if(fp == NULL) { printf("無法打開文件!\n"); return 1; } //將文件內(nèi)容讀取到緩沖區(qū) fseek(fp, 0, SEEK_END); long len = ftell(fp); fseek(fp, 0, SEEK_SET); char buffer[len+1]; fread(buffer, 1, len, fp); fclose(fp); buffer[len] = '\0'; //從緩沖區(qū)中解析JSON對象 cJSON *json = cJSON_Parse(buffer); //獲取JSON對象的成員 cJSON *name = cJSON_GetObjectItemCaseSensitive(json, "name"); cJSON *age = cJSON_GetObjectItemCaseSensitive(json, "age"); cJSON *hobbies = cJSON_GetObjectItemCaseSensitive(json, "hobbies"); //輸出解析結(jié)果 printf("姓名:%s\n年齡:%d\n愛好:\n", name->valuestring, age->valueint); cJSON *hobby = NULL; cJSON_ArrayForEach(hobby, hobbies) { printf("%s\n", hobby->valuestring); } //釋放JSON對象 cJSON_Delete(json); return 0; }
在上述示例中,我們首先打開JSON文件,將其讀取到緩沖區(qū)中,然后使用cJSON_Parse函數(shù)解析JSON對象。之后,我們可以通過cJSON_GetObjectItemCaseSensitive函數(shù)獲取JSON對象的成員。最后,我們使用cJSON_ArrayForEach函數(shù)遍歷數(shù)組類型的成員(如"hobbies"),并輸出相關(guān)信息。