JSON自动化提示和校验

281 阅读1分钟

发现

之前,在goland中写kustomization.yaml的时候,无意间发现goland会自动补全,效果如下图: 1.gif

疑惑

疑惑goland是怎么做到?首先大胆地猜想一下:

  1. kustomization本身应该有类似schema文档?
  2. goland将schema文档和特定文件进行了关联?

探秘

如果你用的mac电脑,按住Command,左击一下,会出现如下效果: 屏幕录制2022-12-30-下午9.08.54.gif 会弹出一个界面,跳转地址,打开这个地址,你会发现,里面的内容定义了kustomization的schema文档。这样第一个问题解决了。 至于第二个问题,我们依次点击: Goland -> Preferences,然后输入json关键字,拉到最底部。goland默认关联了SchemaStoreAPI来作为远程的JSON Schema。 3.png

联想

在日常开发过程中,我们难免会遇到json/yaml等格式的配置文件,如果我们能将自定义的schema关联到我们的配置文件,想想是不是挺不错的?我们日常开发的IDE,比如goland,vs code怎么进行关联呢?

goland

自定义schema

我们可以借助其他的工具json转schema定制schema约束,我们以如下schema为例子:

{
  "properties": {
    "shard": {
      "title": "分表字段",
      "type": "string"
    },
    "convertShard": {
      "title": "分表字段转换",
      "type": "string"
    },
    "minDateYear": {
      "title": "开始年份",
      "type": "integer",
      "minimum": 0,
      "maximum": 9999
    },
    "minDateMonth": {
      "title": "开始月份",
      "type": "integer",
      "minimum": 1,
      "maximum": 12
    }
  },
  "title": "mongo脚本初始化",
  "type": "object",
  "description": "",
  "required": []
}

添加自定义的Schema

4.png

关联Schema和配置文件

这里我们将自定义的schema和*.mongo.yaml和*.mongo.json进行了关联 5.png

查看效果

新建文件test.mongo.yaml,如果我们输入的值不合法,会有提示 6.gif

vs code

vscode只支持JSON文件,不支持yaml,参考地址