C语言使用cjson库,解析一个json文件
时间: 2023-08-13 13:34:57 浏览: 175
cJSON库,C语言解析json数据的库
使用cjson库解析一个json文件可以分为以下几步:
1. 引入cjson库的头文件,如:`#include "cJSON.h"`
2. 读取json文件内容到一个字符串变量中,如:
```
char* json_content = NULL;
FILE* fp = fopen("example.json", "rb");
fseek(fp, 0, SEEK_END);
long file_size = ftell(fp);
rewind(fp);
json_content = (char*)malloc(file_size + 1);
fread(json_content, file_size, 1, fp);
fclose(fp);
json_content[file_size] = '\0';
```
3. 使用cJSON库的`cJSON_Parse()`函数解析json字符串,如:
```
cJSON* root = cJSON_Parse(json_content);
if (root == NULL) {
printf("Error before: [%s]\n", cJSON_GetErrorPtr());
}
```
4. 通过`cJSON_GetObjectItem()`函数获取json对象的成员变量,如:
```
cJSON* name = cJSON_GetObjectItem(root, "name");
const char* name_value = name->valuestring;
```
5. 释放cJSON对象的内存,如:
```
cJSON_Delete(root);
```
完整的代码示例可以参考以下代码:
```
#include "cJSON.h"
#include <stdio.h>
#include <stdlib.h>
int main() {
char* json_content = NULL;
FILE* fp = fopen("example.json", "rb");
fseek(fp, 0, SEEK_END);
long file_size = ftell(fp);
rewind(fp);
json_content = (char*)malloc(file_size + 1);
fread(json_content, file_size, 1, fp);
fclose(fp);
json_content[file_size] = '\0';
cJSON* root = cJSON_Parse(json_content);
if (root == NULL) {
printf("Error before: [%s]\n", cJSON_GetErrorPtr());
return 1;
}
cJSON* name = cJSON_GetObjectItem(root, "name");
const char* name_value = name->valuestring;
printf("name: %s\n", name_value);
cJSON_Delete(root);
free(json_content);
return 0;
}
```
阅读全文