将JSON文件中的数据提取到C语言的结构中,可以通过以下步骤实现:
以下是一个示例代码,使用cJSON库将JSON文件中的数据提取到C语言的结构体中:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "cJSON.h"
typedef struct {
char name[100];
int age;
char address[100];
} Person;
int main() {
// 读取JSON文件内容
FILE *file = fopen("data.json", "r");
if (file == NULL) {
printf("Failed to open JSON file.\n");
return 1;
}
fseek(file, 0, SEEK_END);
long fileSize = ftell(file);
fseek(file, 0, SEEK_SET);
char *jsonData = (char *)malloc(fileSize + 1);
fread(jsonData, 1, fileSize, file);
jsonData[fileSize] = '\0';
fclose(file);
// 解析JSON文件
cJSON *json = cJSON_Parse(jsonData);
if (json == NULL) {
printf("Failed to parse JSON data.\n");
return 1;
}
// 提取数据到结构体
Person person;
cJSON *nameJson = cJSON_GetObjectItem(json, "name");
if (nameJson != NULL && cJSON_IsString(nameJson)) {
strcpy(person.name, nameJson->valuestring);
}
cJSON *ageJson = cJSON_GetObjectItem(json, "age");
if (ageJson != NULL && cJSON_IsNumber(ageJson)) {
person.age = ageJson->valueint;
}
cJSON *addressJson = cJSON_GetObjectItem(json, "address");
if (addressJson != NULL && cJSON_IsString(addressJson)) {
strcpy(person.address, addressJson->valuestring);
}
// 打印提取到的数据
printf("Name: %s\n", person.name);
printf("Age: %d\n", person.age);
printf("Address: %s\n", person.address);
// 释放资源
cJSON_Delete(json);
free(jsonData);
return 0;
}
在上述示例代码中,我们使用了cJSON库来解析JSON文件,并将提取到的数据存储在Person结构体中。最后,我们打印了提取到的数据。请注意,这只是一个简单的示例,实际应用中可能需要根据JSON文件的结构进行适当的修改和扩展。
云+社区沙龙online [国产数据库]
2024清华公管公益直播讲堂——数字化与现代化
云+社区沙龙online[数据工匠]
腾讯云存储专题直播
数字化产业研学会第一期
云+社区技术沙龙[第17期]
领取专属 10元无门槛券
手把手带您无忧上云