日常工作需要跟 JSON 打交道,但压缩 JSON 文本不够直观,之前我是使用「OK JSON」这个软件来格式化的。

它支持 URL Schemes,复制 JSON 后通过热键执行 URL Schemes 来打开它,JSON 文本就会自动格式化,并将格式化后的文本复制到剪贴板里。

OK JSON 自身是有热键设置,但为什么我还要通过 URL Schemes 来实现呢?

前者需要程序有后台运行才能使用热键触发,而通过后者这种方式就无需在意这个,算是 URL Schemes 的优势了。

我一直都是习惯使用鼠标操作,在 Windows 平台上用着「Quicker」很方便,可惜 Quicker 没有 Mac 版。

之前无意中看到「uTools」增加了超级面板功能,支持类似的操作,那在 Mac 上也能用这种功能了。

我尝试用了官方的 JSON 格式化插件,确实不错。

但有一个小地方没有满足我的需求,我想实现:当对 JSON 格式化后,自动将格式化后的内容复制到剪贴板,以方便到其他位置使用。

搜了一圈,没有现成的插件,那就自己简单整了一个,搭配 OK JSON 来用,还不错。

最终的效果是:当光标选中 JSON 文本后,右键唤出超级面板,选择格式化插件,即可自动完成格式化,并将格式化后的 JSON 文本复制到剪贴板中,方便在其他地方使用。


附 uTools 插件配置
具体用法可参考官方文档
https://www.u.tools/docs/developer/welcome.html

plugin.json

{
    "logo": "logo.jpeg",
    "preload": "preload.js",
    "version": "v0.0.1",
    "features": [
        {
            "code": "json_format",
            "explain": "对JSON进行格式化",
            "icon": "logo.jpeg",
            "platform": [
                "win32",
                "darwin",
                "linux"
            ],
            "cmds": [
                "格式化",
                "JSON",
                {
                    "type": "regex",
                    "label": "JSON格式化",
                    "match": "/^\\s*(\\{[\\s\\S]*\\}|\\[[\\s\\S]*\\])\\s*$/",
                    "minLength": 2
                }
            ]
        }
    ]
}

preload.js

window.exports = {
  'json_format': {
    mode: 'none',
    args: {
         enter: (action) => {
            utools.shellOpenExternal('okjson://paste');
            utools.hideMainWindow();
         } 
    }
  }
}