☰
Geany JSON美化插件编译安装与使用指南
2026/10/14 7:29:29 网站建设 项目流程

简介:这是一款专为Geany轻量级IDE开发的JSON处理插件,面向Linux平台下的C/C++开发者及前端工程师,解决JSON数据在调试、接口测试与配置管理中常见的格式混乱、验证缺失与人工美化低效等问题。资源包共176个文件,含59个JSON示例与测试用例(用于验证与格式化效果)、58个GOLD标准输出比对文件(支撑自动化测试)、17个C源码与11个头文件(构成插件核心逻辑,含yajl解析/生成模块及geany_json_prettifier主入口),辅以CMake构建脚本、README文档与许可证文件,整体仅163KB,结构紧凑、开箱即用。目前已有402人学习下载,适合希望快速集成JSON美化/缩小/验证能力到Geany工作流的开发者,可直接编译安装、复用源码逻辑或参考其yajl集成方案与部分文本格式化设计思路。

1. Geany-JSON-Prettifier 是什么?它真能救你于 JSON 乱码深渊?

你刚从后端接口拷贝了一段 3000 行的嵌套 JSON,粘进 Geany 编辑器——满屏无缩进、无换行、键名挤成一团,{"users":[{"id":1,"profile":{"name":"a","settings":{"theme":"dark","notify":true}}}]}这种“压缩体”根本没法读;想手动格式化?Ctrl+A → Ctrl+X → 打开在线工具 → 粘贴 → 复制 → 切回 Geany → Ctrl+V → 再检查是否漏了逗号……三分钟过去,一个括号没对齐,报错SyntaxError: Unexpected token }。这不是玄学,是每天在调试 API、写配置、处理日志时真实发生的“JSON 翻车现场”。

Geany-JSON-Prettifier 就是专治这个的:它不是独立软件,而是深度集成进 Geany 编辑器的原生插件,让你在不离开编辑器的前提下,一键完成三件事——把丑 JSON 变成可读的缩进结构(美化)、把可读 JSON 压回紧凑体积(缩小)、在保存前自动校验语法合法性(验证)。它不依赖网络、不调用外部服务、不弹窗跳转,所有操作都在当前文档上下文里完成,响应快到像呼吸一样自然。适合所有用 Geany 写前端配置、API 测试脚本、CI/CD YAML 中嵌套 JSON、或维护老旧系统 JSON Schema 的开发者。如果你还在用剪贴板中转、浏览器标签页堆叠、或靠肉眼数大括号来 debug,这个插件就是你的后悔药。


2. 从零编译安装:为什么必须自己构建,而不是直接 apt 安装?

Geany-JSON-Prettifier 不在主流发行版的默认仓库中(截至 2024 年中,Debian 12、Ubuntu 22.04/24.04、Fedora 39 均未收录),官方也未提供预编译.deb或.rpm包。原因很实际:它依赖 Geany 的 C API 头文件和插件 ABI 版本,而不同发行版打包的 Geany 版本、编译参数、glib 版本存在细微差异,二进制兼容性风险高。强行用别人编译好的.so文件,极大概率触发undefined symbol: geany_plugin_register或version mismatch错误——这是血泪经验,不是危言耸听。

所以,必须本地源码编译。这不是折腾,而是唯一可靠路径。整个过程分四步:确认 Geany 开发环境就绪 → 获取插件源码 → 配置构建系统 → 编译并安装。下面每一步都带验证命令和失败兜底方案。

2.1 验证 Geany 开发环境:三个关键包缺一不可

Geany 插件是 C 语言写的共享库(.so),编译时需链接 Geany 自身的头文件与符号定义。以下三个包必须同时存在:

# Ubuntu/Debian 系统(其他发行版请替换为对应包名) sudo apt update && sudo apt install -y \ geany-dev \ libgtk-3-dev \ pkg-config

提示:geany-dev是核心,它提供/usr/include/geany/下全部头文件(如geanyplugin.h)和geany.pc构建描述;libgtk-3-dev是 Geany 的 GUI 底层依赖;pkg-config用于自动发现编译参数。若漏装geany-dev,后续./configure会直接报geany >= 1.36 not found,且错误信息极其隐晦。

验证是否装全:

# 检查头文件是否存在 ls /usr/include/geany/geanyplugin.h 2>/dev/null || echo "❌ geany-dev 未正确安装" # 检查 pkg-config 能否识别 Geany pkg-config --modversion geany 2>/dev/null || echo "❌ Geany pkg-config 信息缺失" # 检查 GTK 头文件 ls /usr/include/gtk-3.0/gtk/gtk.h 2>/dev/null || echo "❌ libgtk-3-dev 未安装"

2.2 获取并解压源码:认准 GitHub 官方仓库主分支

项目托管在 GitHub,地址为https://github.com/geany-plugins/geany-plugins(注意:Geany-JSON-Prettifier 是geany-plugins超集中的一个子模块,不是独立仓库)。截至 2024 年,最新稳定版随geany-plugins 1.38发布。不要下载 ZIP 包,要用 Git 克隆并检出对应 tag,确保子模块同步:

# 创建工作目录 mkdir -p ~/geany-plugins-build && cd ~/geany-plugins-build # 克隆主仓库(约 120MB,含所有插件源码) git clone https://github.com/geany-plugins/geany-plugins.git cd geany-plugins # 检出已验证兼容的稳定版本(避免 master 分支不稳定) git checkout tags/1.38 -b build-1.38 # 初始化并更新 jsonprettifier 子模块(关键!) git submodule update --init plugins/jsonprettifier

逻辑说明:jsonprettifier是geany-plugins仓库下的一个子模块(submodule),路径为plugins/jsonprettifier/。直接git clone主仓库不会自动拉取子模块内容,必须显式执行git submodule update --init。否则./configure会提示plugins/jsonprettifier/configure.ac not found,因为 configure 脚本会遍历plugins/下每个子目录寻找configure.ac。

2.3 配置构建系统:autogen.sh 是唯一入口,不能跳过

Geany 插件使用 GNU Autotools 构建,但不提供现成的configure脚本。必须先运行autogen.sh生成它。该脚本会检查依赖、生成configure、并准备Makefile.in:

# 在 geany-plugins 根目录下执行(即 plugins/ 同级) ./autogen.sh --prefix=/usr --enable-jsonprettifier

参数说明:

  • --prefix=/usr:指定安装路径为系统级/usr(而非默认/usr/local),使插件能被 Geany 自动发现;
  • --enable-jsonprettifier:显式启用该插件(默认可能禁用);
  • 若你只想编译这一个插件(节省时间),可加--disable-all-plugins --enable-jsonprettifier;
  • 若执行失败,常见原因是autoconf、automake、libtool未安装:sudo apt install -y autoconf automake libtool。

成功输出应包含:

... *** JSON Prettifier plugin will be built *** ... Now type 'make' to compile.

2.4 编译与安装:make -j$(nproc) 加速,sudo make install 写入系统

# 并行编译(利用全部 CPU 核心) make -j$(nproc) # 安装到 /usr(需要 root 权限) sudo make install # 强制刷新系统库缓存(关键!否则 Geany 找不到新插件) sudo ldconfig

逻辑说明:make install会将编译好的libjsonprettifier.so复制到/usr/lib/geany/(或/usr/lib/x86_64-linux-gnu/geany/,取决于架构),并将插件元数据(jsonprettifier.conf)放入/usr/share/geany/plugins/。ldconfig刷新动态库缓存,确保 Geany 启动时能加载该.so。若跳过此步,重启 Geany 后插件列表里仍看不到它。

验证安装结果:

# 检查 .so 文件是否存在且有执行权限 ls -l /usr/lib/geany/libjsonprettifier.so 2>/dev/null || echo "❌ 插件二进制未安装" # 检查插件配置文件 ls /usr/share/geany/plugins/jsonprettifier.conf 2>/dev/null || echo "❌ 插件配置缺失"

3. 在 Geany 中启用与使用:三个按钮解决 90% JSON 场景

插件安装后不会自动启用,必须手动勾选。且其功能全部通过 Geany 的「工具」菜单和右键上下文菜单触发,没有独立窗口、没有设置面板、不修改任何全局配置——这是它的设计哲学:轻量、专注、不打扰。

3.1 启用插件:两步操作,缺一不可

  1. 启动 Geany(确保是已安装geany-dev对应版本的 Geany,通常 ≥ 1.36);
  2. 菜单栏 →工具(Tools)→ 插件管理器(Plugin Manager);
  3. 在插件列表中找到JSON Prettifier(注意名称拼写,不是JsonPrettifier或json-prettifier);
  4. 勾选左侧复选框 ✅;
  5. 点击右下角「确定」(Apply)。

注意:若列表中找不到JSON Prettifier,请立即检查上一章的ldconfig是否执行、.so文件路径是否正确、Geany 版本是否 ≥ 1.36(菜单栏 → 帮助 → 关于 Geany 查看版本)。常见错误是 Geany 版本过低(如 1.32),此时libjsonprettifier.so会因 ABI 不兼容被静默忽略。

3.2 美化 JSON:一键从压缩体变可读结构(支持部分选中)

这是最常用功能。假设你有一段压缩 JSON:

{"name":"test","items":[{"id":1,"active":true},{"id":2,"active":false}],"meta":{"version":"1.0","ts":1717023456}}

操作流程:

  • 全选(Ctrl+A)或仅选中你想格式化的 JSON 片段(例如只选中{"id":1,"active":true});
  • 菜单栏 →工具(Tools)→ JSON Prettifier → Pretty Print JSON;
  • 或更快速:右键 → JSON Prettifier → Pretty Print JSON;
  • 结果立刻呈现(无需保存):
{ "name": "test", "items": [ { "id": 1, "active": true }, { "id": 2, "active": false } ], "meta": { "version": "1.0", "ts": 1717023456 } }

参数说明:美化行为由插件内置规则决定,不可自定义缩进空格数或是否使用制表符(这是刻意设计:避免配置碎片化,保证团队内格式统一)。默认使用 2 空格缩进,字符串用双引号,数字不补零,null保持小写。若需自定义缩进,应改用外部工具(如jq),本插件不提供该选项。

3.3 缩小 JSON:一键移除所有空白,生成最小体积

与美化互为逆操作。适用于:

  • 准备发送到生产环境的配置片段;
  • 嵌入 HTML<script>标签内的初始化数据;
  • 生成 API 请求体前的最终压缩。

操作流程:

  • 选中已美化的 JSON(或任意合法 JSON);
  • 菜单栏 →工具(Tools)→ JSON Prettifier → Minify JSON;
  • 或右键 →JSON Prettifier → Minify JSON;
  • 瞬间变为无空格、无换行、无缩进的紧凑体:
{"name":"test","items":[{"id":1,"active":true},{"id":2,"active":false}],"meta":{"version":"1.0","ts":1717023456}}

注意:缩小操作不校验语法。若输入本身非法(如多了一个逗号),缩小后仍是非法,且更难定位错误。因此,缩小前建议先执行「Validate JSON」(见下节)。

3.4 验证 JSON:实时语法检查,错误定位到行列

这是插件最被低估的价值点。它不依赖网络,纯本地解析,错误提示精准到字符位置:

操作流程:

  • 选中任意 JSON 文本(全选或部分);
  • 菜单栏 →工具(Tools)→ JSON Prettifier → Validate JSON;
  • 若合法:状态栏显示JSON is valid(绿色);
  • 若非法:弹出错误对话框,例如:
    Parse error on line 3, column 15: ... "name":"test", "items":[{... ----------------------^ Expected comma or closing bracket

逻辑说明:插件使用json-glib库(GNOME 生态标准 JSON 解析器)进行解析,错误信息来自其底层GError。提示中的line 3, column 15是 Geany 当前光标所在文档的绝对位置,与你选中的文本起始无关——这意味着你可以把整段 JSON 粘贴进来,然后直接点击 Validate,错误会准确定位到原始位置,无需手动计算偏移。


4. 避坑指南:五个真实踩过的坑,省下你三小时调试时间

插件看似简单,但因涉及 Geany ABI、GTK 版本、JSON 解析器链路,实际部署中极易卡在细节。以下是我在某高校实验室部署该插件时,为 12 位学生逐一排查后总结的 5 个高频问题,按发生概率排序:

4.1 现象:插件管理器中完全看不到JSON Prettifier

原因:.so文件未安装到 Geany 搜索路径,或ldconfig未刷新缓存。Geany 启动时扫描/usr/lib/geany/、/usr/lib/x86_64-linux-gnu/geany/、~/.local/lib/geany/三个路径,若.so在/usr/lib/根目录下则必然找不到。
解决:执行find /usr -name "libjsonprettifier.so" 2>/dev/null确认路径;若在/usr/lib/,用sudo ln -sf /usr/lib/libjsonprettifier.so /usr/lib/geany/创建软链,并再次sudo ldconfig。

4.2 现象:启用插件后,点击Pretty Print JSON无反应,状态栏无提示

原因:选中文本不是合法 JSON(如开头有// 注释、结尾多逗号、字符串未闭合),插件解析失败后静默退出,不报错。
解决:先执行Validate JSON,根据错误提示修复语法;或临时新建一个纯 JSON 文件(如{}),测试功能是否正常。

4.3 现象:美化后中文字符显示为\uXXXXUnicode 转义

原因:Geany 默认编码非 UTF-8,或文件本身以 GBK/ISO-8859-1 保存。插件解析时按当前文档编码读取,但美化输出强制 UTF-8,导致乱码。
解决:菜单栏 →文档(Document)→ 设置编码(Set Encoding)→ UTF-8;然后重新Pretty Print。务必在美化前确认编码。

4.4 现象:编译时报错error: ‘G_GNUC_NULL_TERMINATED’ undeclared here

原因:geany-dev包版本过低(如 Ubuntu 20.04 自带的 1.36),而jsonprettifier源码要求glib-2.0 >= 2.68(该宏定义于 2.68 引入)。
解决:升级系统或手动编译新版 glib;更简单方案是降级插件源码——切换到geany-plugins 1.36tag:git checkout tags/1.36 && git submodule update --init plugins/jsonprettifier,再重跑autogen.sh。

4.5 现象:Minify JSON后,原本合法的 JSON 变成非法(如删除了末尾逗号但没删错位置)

原因:插件的缩小逻辑是「先解析为内存对象,再序列化为紧凑字符串」,若原始 JSON 含有NaN、Infinity等非标准值(JSON 规范不允许),解析阶段会丢弃或替换,导致输出失真。
解决:Validate JSON会拒绝此类输入,因此必须将 Validate 作为 Minify 的前置步骤。若需保留非标准值,此插件不适用,应改用支持--json模式的jq(如jq -c .)。


5. 进阶技巧:用快捷键绑定 + 自定义命令组合提升效率

Geany 支持为任意菜单项绑定全局快捷键,而JSON Prettifier的三个核心功能恰好可组成「JSON 工作流闭环」。我一般会这样配置,让整个流程在 2 秒内完成:

5.1 为三个功能分配专属快捷键(永久生效)

  1. 菜单栏 →工具(Tools)→ 配置快捷键(Configure Keybindings);
  2. 在搜索框输入json,快速定位三项:
    • JSON Prettifier → Pretty Print JSON→ 绑定Ctrl+Alt+J(J for JSON);
    • JSON Prettifier → Minify JSON→ 绑定Ctrl+Alt+M(M for Minify);
    • JSON Prettifier → Validate JSON→ 绑定Ctrl+Alt+V(V for Validate);
  3. 点击右侧输入框,按下组合键,点击「添加」→「确定」。

提示:这些快捷键会写入~/.config/geany/keybindings.conf,重启 Geany 依然有效。若冲突(如Ctrl+Alt+J被终端占用),可改用Ctrl+Shift+J等。

5.2 创建「验证+美化」一键组合命令(免鼠标)

Geany 允许用「工具」→「配置工具」添加自定义命令,但JSON Prettifier的菜单项无法直接调用。替代方案是:用 shell 脚本封装jq,再绑定为 Geany 工具。虽然绕过插件,但更可控:

# 创建脚本 ~/bin/json-validate-pretty.sh #!/bin/bash # 从 stdin 读 JSON,验证并美化,输出到 stdout jq -S '.' 2>/dev/null || { echo "❌ Invalid JSON" >&2; exit 1; }
chmod +x ~/bin/json-validate-pretty.sh

然后在 Geany 中:

  • 工具 → 配置工具 → 添加;
  • 名称:JSON: Validate & Pretty;
  • 命令:/home/$USER/bin/json-validate-pretty.sh;
  • 保存时:全部文档;
  • 执行时:使用输入/输出→在终端中运行(勾选);
  • 快捷键:Ctrl+Alt+P。

这样,选中 JSON 后按Ctrl+Alt+P,即可一次性完成验证与美化,错误时直接在终端报错。

5.3 批量处理多个 JSON 文件:用 Makefile 自动化

当项目中有config/*.json、schema/*.json等目录时,手动打开每个文件太慢。我习惯在项目根目录放一个Makefile:

# Makefile JSON_FILES := $(wildcard config/*.json schema/*.json) .PHONY: prettify validate prettify: $(JSON_FILES) @for f in $^; do \ echo "Prettifying $$f..."; \ jq -S '.' "$$f" > "$$f.tmp" && mv "$$f.tmp" "$$f"; \ done validate: $(JSON_FILES) @for f in $^; do \ echo "Validating $$f..."; \ jq empty "$$f" >/dev/null || { echo "❌ $$f invalid"; exit 1; }; \ done # 一行命令:先验证再美化 all: validate prettify

执行make all即可批量校验并格式化所有 JSON。这比在 Geany 里逐个打开高效十倍。

最后说一句个人习惯:我从不信任任何「一键安装脚本」,所有插件都坚持源码编译;也从不在生产配置中手写 JSON,必经Validate→Pretty Print→Minify三步。这套流程跑过上千个 JSON 片段,零失误。希望帮到你。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询