色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

c 解析超大json文件夾

榮姿康2年前9瀏覽0評論

JSON(JavaScript Object Notation)是一種輕量級的數(shù)據(jù)交換格式。在處理數(shù)據(jù)傳輸時,可能會遇到非常大的 JSON 文件,因此需要使用一些技巧來解析這些大文件。

在 C 語言中,可以使用 json-c 庫來解析 JSON 文件。首先需要安裝 json-c 庫,在 Linux 下運行以下命令即可:

sudo apt-get install libjson-c-dev

接下來,需要使用 json-c 庫的 json-c/json.h 頭文件,并使用以下代碼片段來解析 JSON 文件:

#include <stdio.h>
#include <json-c/json.h>
void readJson(const char* filename) {
printf("Start reading JSON file: %s\n", filename);
FILE* fp;
char* jsonStr;
struct json_object* jsonObj;
struct json_tokener* tokener = json_tokener_new();
int pageCount = 0;
int bufferSize = 1024;
int bytesRead = 0;
fp = fopen(filename, "r");
if (fp == NULL) {
printf("Error: Failed to open %s\n", filename);
return;
}
jsonStr = (char*) malloc(bufferSize+1);
while((bytesRead = fread(jsonStr+strlen(jsonStr), 1, bufferSize, fp)) >0) {
struct json_object* jtemp = json_tokener_parse_ex(tokener, jsonStr, bytesRead+strlen(jsonStr));
if (tokener->err != json_tokener_success) {
printf("Error: %s\n", json_tokener_error_desc(tokener->err));
json_tokener_reset(tokener);
} else {
jsonArray = json_object_get_array(jsonObj);
printf("%d: %d", pageCount, json_array_length(jsonArray));
pageCount++;
json_object_put(jtemp);
}
}
fclose(fp);
json_tokener_free(tokener);
free(jsonStr);
printf("End reading JSON file\n");
}

可以看到,代碼中的 while 循環(huán)讀取 JSON 文件的內(nèi)容,json_tokener_parse_ex 函數(shù)在讀取完整個 JSON 對象之前返回 NULL。在讀取完整個 JSON 對象后,代碼使用 json_object_get_array 函數(shù)獲取 JSON 數(shù)組,并使用 json_array_length 函數(shù)獲取此數(shù)組中的元素數(shù)。

這樣,就可以快速解析超大的 JSON 文件了。