在C語言中,讀取JSON格式數(shù)據(jù)文件可以用第三方庫libjson,使用它可以方便地解析JSON格式數(shù)據(jù)。在使用該庫之前,需要先了解JSON文件的結(jié)構(gòu)并安裝相關(guān)庫。
JSON文件的結(jié)構(gòu)類似于鍵值對(duì)的形式,可以簡(jiǎn)單地看做一個(gè)對(duì)象。例如:
{ "name": "Lucy", "age": 20, "score": [80, 90, 85] }
其中,"name"、"age"和"score"都是該對(duì)象的屬性,對(duì)應(yīng)的值分別是"Lucy"、20和[80, 90, 85]。在C語言中,使用libjson庫中的函數(shù)可以方便地獲取這些值。
下面是一個(gè)簡(jiǎn)單的代碼示例:
#include#include int main() { FILE *file = fopen("data.json", "r"); char buffer[1024]; fread(buffer, 1, sizeof(buffer), file); fclose(file); json_object *obj = json_tokener_parse(buffer); json_object *name_obj = json_object_object_get(obj, "name"); const char *name = json_object_get_string(name_obj); printf("name: %s\n", name); json_object *age_obj = json_object_object_get(obj, "age"); int age = json_object_get_int(age_obj); printf("age: %d\n", age); json_object *score_obj = json_object_object_get(obj, "score"); int score_count = json_object_array_length(score_obj); printf("score count: %d\n", score_count); for (int i = 0; i< score_count; i++) { json_object *score_item_obj = json_object_array_get_idx(score_obj, i); int score = json_object_get_int(score_item_obj); printf("score %d: %d\n", i + 1, score); } json_object_put(obj); return 0; }
該代碼分別讀取了JSON文件中的"name"、"age"和"score"屬性,并輸出它們的值。使用這種方式可以方便地讀取JSON格式數(shù)據(jù),把它和其他編程語言一樣可以處理,并最終輸出到屏幕或存儲(chǔ)到數(shù)據(jù)庫等。