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

c 獲取json指定行的值

錢瀠龍2年前8瀏覽0評論

在開發中,我們經常需要獲取json數據的指定行的值。在C語言中,我們可以使用第三方庫cJSON來解析json數據。

首先我們需要導入cJSON庫,在代碼中引用頭文件:

#include "cJSON.h"

接著,我們定義一個cJSON對象,用來存儲json數據:

cJSON *json;

然后,我們讀取json文件,將數據存儲在json對象中:

char *filename = "data.json"; // json文件名
FILE *fp = fopen(filename, "rb");
if (fp == NULL) {
printf("failed to open %s\n", filename);
return;
}
fseek(fp, 0, SEEK_END);
long len = ftell(fp);
fseek(fp, 0, SEEK_SET);
char *data = (char *)malloc(len + 1);
fread(data, 1, len, fp);
fclose(fp);
data[len] = '\0';
json = cJSON_Parse(data);
free(data);
if (!json) {
printf("Error before: [%s]\n", cJSON_GetErrorPtr());
return;
}

接下來,我們可以通過cJSON對象來獲取json數據的指定行的值。假設我們要獲取json數據中"id"為1的"name"的值:

cJSON *entry = cJSON_GetObjectItemCaseSensitive(json, "entries");
if (cJSON_IsArray(entry)) {
cJSON *item = NULL;
cJSON_ArrayForEach(item, entry) {
cJSON *id = cJSON_GetObjectItemCaseSensitive(item, "id");
if (cJSON_IsNumber(id) && (id->valueint == 1)) {
cJSON *name = cJSON_GetObjectItemCaseSensitive(item, "name");
if (cJSON_IsString(name) && (name->valuestring != NULL)) {
printf("%s\n", name->valuestring);
break;
}
}
}
}

上述代碼會遍歷json數據中的每一個元素,判斷其"id"是否為1,如果是則獲取其"name"的值并輸出。

使用cJSON庫可以方便地處理json數據,通過上述方法也可以輕松獲取指定行的值。