C语言如何生成JSON文件及如何打开查看
在程序开发中,JSON(JavaScript Object Notation)因其轻量级、易读性强的特点,成为数据交换的主流格式之一,本文将详细介绍如何使用C语言生成JSON文件,以及生成后如何打开和查看文件内容。
C语言生成JSON文件的常用方法
在C语言中,没有内置的JSON处理库,因此需要借助第三方库来简化JSON的生成和解析,常用的JSON库包括 cJSON(轻量级、广泛使用)、Jansson(功能丰富、支持动态类型)等,本文以最常用的 cJSON 为例,讲解JSON文件的生成步骤。
安装cJSON库
cJSON是一个开源的C语言JSON解析器和生成器,使用单文件实现,易于集成。
(1)直接下载源码
从cJSON的GitHub仓库(https://github.com/DaveGamble/cJSON)下载最新源码,只需将 cJSON.h 和 cJSON.c 文件添加到你的项目中即可。
(2)使用包管理器安装(Linux环境)
# Ubuntu/Debian sudo apt-get install libcjson-dev # CentOS/RHEL sudo yum install cJSON-devel
使用cJSON生成JSON数据并写入文件
cJSON通过创建JSON对象(cJSON*)来构建JSON结构,支持对象(object)、数组(array)、字符串(string)、数字(number)等多种数据类型,以下是详细步骤:
(1)包含头文件并初始化
#include <stdio.h> #include <stdlib.h> #include <string.h> #include "cJSON.h" // 包含cJSON头文件
(2)创建JSON对象并添加数据
假设我们要生成如下JSON格式的数据:
{
"name": "张三",
"age": 25,
"isStudent": false,
"courses": ["数学", "英语", "编程"],
"address": {
"city": "北京",
"district": "海淀区"
}
}
使用cJSON生成的代码如下:
// 1. 创建根对象(JSON对象)
cJSON* root = cJSON_CreateObject();
// 2. 向根对象添加键值对
cJSON_AddStringToObject(root, "name", "张三"); // 添加字符串
cJSON_AddNumberToObject(root, "age", 25); // 添加数字
cJSON_AddBoolToObject(root, "isStudent", false); // 添加布尔值
// 3. 创建数组并添加到根对象
cJSON* courses = cJSON_CreateArray();
cJSON_AddItemToArray(courses, cJSON_CreateString("数学"));
cJSON_AddItemToArray(courses, cJSON_CreateString("英语"));
cJSON_AddItemToArray(courses, cJSON_CreateString("编程"));
cJSON_AddItemToObject(root, "courses", courses); // 将数组添加到对象
// 4. 创建嵌套对象并添加到根对象
cJSON* address = cJSON_CreateObject();
cJSON_AddStringToObject(address, "city", "北京");
cJSON_AddStringToObject(address, "district", "海淀区");
cJSON_AddItemToObject(root, "address", address); // 将嵌套对象添加到根对象
(3)将JSON对象转换为字符串
cJSON提供了 cJSON_Print() 和 cJSON_PrintUnformatted() 函数,前者生成格式化的易读字符串,后者生成无格式的紧凑字符串:
// 格式化输出(带换行和缩进,易读)
char* json_string = cJSON_Print(root);
printf("格式化JSON:\n%s\n", json_string);
// 无格式化输出(紧凑,适合文件存储)
char* json_string_unformatted = cJSON_PrintUnformatted(root);
printf("无格式化JSON:\n%s\n", json_string_unformatted);
(4)将JSON字符串写入文件
使用标准文件操作(fopen、fwrite、fclose)将字符串保存到文件中:
FILE* fp = fopen("data.json", "w"); // 以写入模式打开文件(若文件不存在则创建)
if (fp == NULL) {
perror("打开文件失败");
exit(EXIT_FAILURE);
}
// 写入格式化的JSON字符串(可选:写入无格式化的字符串)
fputs(json_string, fp);
fclose(fp); // 关闭文件
// 释放cJSON对象内存(重要!避免内存泄漏)
cJSON_Delete(root);
free(json_string);
free(json_string_unformatted);
(5)完整代码示例
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "cJSON.h"
int main() {
// 1. 创建根对象
cJSON* root = cJSON_CreateObject();
// 2. 添加基本数据
cJSON_AddStringToObject(root, "name", "张三");
cJSON_AddNumberToObject(root, "age", 25);
cJSON_AddBoolToObject(root, "isStudent", false);
// 3. 添加数组
cJSON* courses = cJSON_CreateArray();
cJSON_AddItemToArray(courses, cJSON_CreateString("数学"));
cJSON_AddItemToArray(courses, cJSON_CreateString("英语"));
cJSON_AddItemToArray(courses, cJSON_CreateString("编程"));
cJSON_AddItemToObject(root, "courses", courses);
// 4. 添加嵌套对象
cJSON* address = cJSON_CreateObject();
cJSON_AddStringToObject(address, "city", "北京");
cJSON_AddStringToObject(address, "district", "海淀区");
cJSON_AddItemToObject(root, "address", address);
// 5. 转换为字符串并写入文件
char* json_string = cJSON_Print(root);
FILE* fp = fopen("data.json", "w");
if (fp) {
fputs(json_string, fp);
fclose(fp);
printf("JSON文件生成成功:data.json\n");
} else {
perror("文件写入失败");
}
// 6. 释放内存
cJSON_Delete(root);
free(json_string);
return 0;
}
(6)编译与运行
假设源文件为 generate_json.c,cJSON源文件为 cJSON.c,编译命令如下(Linux环境):
gcc generate_json.c cJSON.c -o generate_json -lm
运行后,会在当前目录下生成 data.json 文件。
如何打开和查看JSON文件
生成JSON文件后,通常需要打开并查看其内容,根据使用场景(开发调试、日常查看),可选择以下方式:
使用文本编辑器直接查看(适合简单内容)
JSON是文本格式,可用任何文本编辑器打开,
- Windows:记事本、Notepad++、VS Code
- macOS:文本编辑、TextEdit、VS Code
- Linux:vim、nano、gedit
操作步骤:
右键点击JSON文件,选择“用记事本打开”(或用编辑器拖拽文件),即可查看原始文本内容,用VS Code打开data.json,会显示格式化后的内容:
{
"name": "张三",
"age": 25,
"isStudent": false,
"courses": [
"数学",
"英语",
"编程"
],
"address": {
"city": "北京",
"district": "海淀区"
}
}
使用JSON专用查看工具(适合复杂或格式化需求)
JSON文件可能包含嵌套结构或大量数据,专用工具能提供更好的可读性和格式化功能:
(1)在线JSON查看器
- JSONLint(https://jsonlint.com/):验证JSON格式是否正确,并提供格式化显示。
- Code Beautify(https://codebeautify.org/jsonviewer):支持JSON树形结构展示、折叠/展开嵌套层级。
使用方法:将JSON文件内容复制到网页输入框,即可自动格式化和可视化。
(2)桌面工具
- VS Code:安装“JSON”插件(默认已安装),打开JSON文件时会自动高亮语法并支持格式化(快捷键
Shift+Alt+F)。 - Sublime Text:通过Package Control安装“JSON”插件,支持语法高亮和格式化。
- JSON Viewer(浏览器插件):如Chrome的“JSON Viewer”,安装后可直接在浏览器中打开JSON文件,树形展示结构。
通过命令行工具查看(适合Linux/macOS用户)
在Linux或macOS终端中,可使用以下命令快速查看JSON内容:
(1)cat(直接输出原始内容)
cat data.json
(2)jq(JSON处理器,需先安装)
jq 是一个强大的命令行JSON处理工具,支持格式化、过滤、提取数据等,安装方式:
# Ubuntu/Debian sudo apt-get install jq # CentOS/RHEL sudo



还没有评论,来说两句吧...