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

c 多個json格式轉結構體

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

JSON已經成為了一種非常常見的數據類型,它支持簡潔、結構化的數據表示,并且非常易于解析。當你使用C語言處理JSON數據時,你需要將JSON格式的數據轉換為C語言中的結構體。

#include#include#include#includetypedef struct {
int id;
char name[50];
char email[50];
} person;
int main() {
char* json_string = "{ \"id\": 1, \"name\": \"Tom\", \"email\": \"tom@example.com\" }";
cJSON* json = cJSON_Parse(json_string);
if (json == NULL) {
printf("Error parsing JSON\n");
return 1;
}
person p;
p.id = cJSON_GetObjectItem(json, "id")->valueint;
strcpy(p.name, cJSON_GetObjectItem(json, "name")->valuestring);
strcpy(p.email, cJSON_GetObjectItem(json, "email")->valuestring);
cJSON_Delete(json);
return 0;
}

上面的代碼演示了如何將一個JSON格式的字符串解析為C語言中的person結構體。在這個例子中,我們使用了cJSON第三方庫,它可以幫助我們更輕松地解析JSON數據。

如果你有多個JSON格式的數據需要解析,你可以使用一個for循環來處理它們。

int main() {
char* json_string = "[{ \"id\": 1, \"name\": \"Tom\", \"email\": \"tom@example.com\" }, { \"id\": 2, \"name\": \"Jerry\", \"email\": \"jerry@example.com\" }]";
cJSON* json = cJSON_Parse(json_string);
if (json == NULL) {
printf("Error parsing JSON\n");
return 1;
}
int count = cJSON_GetArraySize(json);
person* people = (person*)malloc(sizeof(person)*count);
for (int i = 0; i< count; i++) {
cJSON* item = cJSON_GetArrayItem(json, i);
people[i].id = cJSON_GetObjectItem(item, "id")->valueint;
strcpy(people[i].name, cJSON_GetObjectItem(item, "name")->valuestring);
strcpy(people[i].email, cJSON_GetObjectItem(item, "email")->valuestring);
}
cJSON_Delete(json);
return 0;
}

在這個例子中,我們有一個JSON數組,里面包含兩個person對象。我們使用一個for循環來遍歷這個數組,并將它們解析為一個person結構體數組。請注意,我們使用了動態內存分配來管理這個數組,因為我們不知道它的大小。

總之,當你需要在C語言中處理JSON格式的數據時,請使用cJSON這樣的第三方庫來幫助你更輕松地處理它們。