用C写一个函数:读取一个json文件内容,并将传入的参数进行对比,相同的就显示,不同的就往下执行
时间: 2024-09-18 08:08:28 浏览: 47
Qt4实现json文件的读取和显示
5星 · 资源好评率100%
在C语言中,处理JSON数据通常需要第三方库如` cJSON `或` libjson-c `,因为C本身的语法并不直接支持JSON解析。这里我会展示一个简单的例子,使用` cJSON `库来读取文件并比较两个JSON对象。首先,确保已安装cJSON库,然后按照下面的步骤操作:
```c
#include <stdio.h>
#include "cJSON.h"
// JSON 文件路径
#define FILE_PATH "./data.json"
// 对象字面量作为参照
static cJSON *ref_obj = NULL;
// 读取JSON文件内容
void read_json(const char *file_path) {
FILE *fp = fopen(file_path, "r");
if (!fp) {
printf("Failed to open file: %s\n", file_path);
return;
}
cJSON *root = cJSON_ParseFile(fp);
if (root == NULL) {
fprintf(stderr, "Error parsing JSON file: %s\n", cJSON_GetErrorPtr());
fclose(fp);
return;
}
// 将文件内容赋给全局变量ref_obj
ref_obj = root;
fclose(fp);
}
// 比较两个JSON对象是否相等
int compare_json_objects(cJSON *obj) {
int ret = cJSON_IsSameObject(obj, ref_obj);
if (!ret) {
printf("Objects are different.\n");
} else {
printf("Objects are the same.\n");
}
cJSON_Delete(obj); // 释放内存
return ret;
}
int main() {
read_json(FILE_PATH);
// 创建一个新的JSON对象,假设我们想要比较的对象在这里
cJSON *compare_obj = cJSON_CreateObject();
// ...(填充你的对象结构)
// 比较新创建的对象和参考对象
int result = compare_json_objects(compare_obj);
// 后续处理不同的逻辑
// ...
return 0;
}
```
阅读全文