在C語(yǔ)言中,常見的Json讀寫庫(kù)有很多,比如:cJSON、jansson、libscon、rapidjson等等。其中cJSON是使用最廣泛的。
對(duì)于Json文件的讀取,我們可以通過(guò)解析Json字符串來(lái)實(shí)現(xiàn)。首先,需要從文件中讀取Json字符串:
FILE *fp = fopen("example.json", "r"); char readBuffer[65536]; rapidjson::FileReadStream fileStream(fp, readBuffer, sizeof(readBuffer)); rapidjson::Document document; document.ParseStream(fileStream);
這樣我們就可以得到一個(gè)Json文件的根節(jié)點(diǎn):
assert(document.IsObject());
然后可以通過(guò)以下方式遍歷獲取Json中的各個(gè)節(jié)點(diǎn):
const rapidjson::Value& value = document["MemberName"]; assert(value.IsString()); printf("%s\n", value.GetString());
對(duì)于Json文件的寫入,我們同樣可以使用cJSON庫(kù)來(lái)實(shí)現(xiàn)。首先,需要?jiǎng)?chuàng)建一個(gè)cJSON對(duì)象,然后再添加屬性:
cJSON *root = cJSON_CreateObject(); cJSON_AddStringToObject(root, "name", "Tom"); cJSON_AddNumberToObject(root, "age", 18); cJSON_AddStringToObject(root, "gender", "male");
最后將Json對(duì)象以字符串形式輸出到文件中:
char * jsonStr = cJSON_Print(root); FILE *fp = fopen("example.json", "w+"); fwrite(jsonStr, strlen(jsonStr), 1, fp); fclose(fp);
使用以上方法,我們就可以方便地實(shí)現(xiàn)Json文件的讀寫。