本站点文档内容均翻译自code.visualstudio.com,仅供个人学习,如有差异请以官网为准。

使用Visual Studio Code编辑JSON

JSON 是一种在配置文件中常见的数据格式,例如package.json项目.json我们还在Visual Studio Code中广泛使用它来处理我们的配置文件。当打开一个以 结尾的文件时.jsonVS Code 提供了功能,使编写或修改文件内容更加简单。

VS Code 中的 JSON

IntelliSense 和验证

对于属性和值,无论是有模式还是没有模式的JSON数据,我们都会在您输入时通过IntelliSense自动提供建议。您还可以通过触发建议命令手动查看建议(⌃Space(Windows, Linux Ctrl+Space)。

我们还根据关联的JSON模式进行结构和值验证,为您提供红色波浪线。要禁用验证,请使用

json.validate.enable
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
设置.

智能感知

软件包和项目依赖性

我们还为特定值集(如软件包和项目依赖项)提供IntelliSensepackage.json项目.json,和bower.json输入:.

快速导航

JSON文件可能会变得很大,我们支持使用转到符号命令快速导航到属性 (⇧⌘O (Windows, Linux Ctrl+Shift+O))。

转到符号

悬浮

当您悬停在带有或不带有模式的JSON数据的属性和值上时,我们将提供额外的上下文。

悬停

格式化

您可以使用 ⇧⌥F 格式化您的JSON文档 (Windows Shift+Alt+F, Linux Ctrl+Shift+I) 或者 从上下文菜单中选择格式化文档

折叠

您可以使用行号和行首之间的空白区中的折叠图标来折叠源代码区域。所有对象和数组元素的区域都可以折叠。

带注释的JSON

除了默认的JSON模式遵循JSON规范之外,VS Code 还有一个带注释的JSON (jsonc) 模式。此模式用于VS Code配置文件,例如settings.json任务.json,或launch.json当处于带注释的JSON模式时,您可以使用单行 (输入://) 以及块注释 (/* */) 如在 JavaScript 中使用。该模式也接受尾随逗号,但不推荐使用,并且编辑器将显示警告。

当前的编辑器模式在编辑器的状态栏中显示。选择模式指示器以更改模式并配置文件扩展名如何关联到模式。您还可以直接修改

文件关联
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
设置 用于将文件名或文件名模式关联到 输入:jsonc输入:.

JSON模式和设置

为了理解JSON文件的结构,我们使用JSON schemas。JSON schemas描述了JSON文件的形状,以及值集、默认值和描述。VS Code自带的JSON支持涵盖了从draft 4到draft 7的所有草稿版本,并对2019-09和2020-12的草稿提供有限支持。

服务器如 JSON Schema Store 提供了大多数常见JSON配置文件的模式。然而,模式也可以在VS Code工作区中的文件中定义,以及VS Code设置文件中。

将JSON文件与模式关联可以通过在JSON文件本身中使用$schema 属性,或在用户或工作区 设置 (文件 > 首选项 > 设置) 下的属性

json.模式
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
输入:.

VS Code 扩展可以定义模式和模式映射。这就是为什么 VS Code 已经知道一些知名 JSON 文件的模式,例如package.jsonbower.json,和tsconfig.json输入:.

在JSON中的映射

在下面的示例中,JSON文件指定了其内容遵循CoffeeLint模式。

{
  "$schema": "https://json.schemastore.org/coffeelint",
  "line_endings": "unix"
}

请注意,此语法是 VS Code 特有的,不是 JSON Schema 规范的一部分。添加 $schema键更改了JSON本身,这可能会导致消费该JSON的系统无法预期,例如,模式验证可能会失败。如果出现这种情况,您可以使用其他映射方法之一。

用户设置中的映射

以下是从用户 设置 中摘录的内容,展示了如何 .babelrc 文件映射到 babelrc 方案位于 https://json.schemastore.org/babelrc

"json.schemas": [
    {
        "fileMatch": [
            "/.babelrc"
        ],
        "url": "https://json.schemastore.org/babelrc"
    }
]

提示: 除了定义用于 .babelrc,同时确保.babelrc与JSON语言模式相关联。这也可以在设置中通过使用来完成。文件.关联数组设置。

映射到工作区中的模式

要映射位于工作区中的模式,请使用相对路径。在这个例子中,工作区根目录下有一个名为myschema.json将被用作所有以 结尾的文件的模式.foo.json输入:.

"json.schemas": [
    {
        "fileMatch": [
            "**/*.foo.json"
        ],
        "url": "./myschema.json"
    }
]

映射到设置中定义的模式

要映射在用户或工作区设置中定义的模式,请使用模式属性。在这个例子中,定义了一个将用于所有名为的文件的模式。.myconfig输入:.

"json.schemas": [
    {
        "fileMatch": [
            "/.myconfig"
        ],
        "schema": {
            "type": "object",
            "properties": {
                "name" : {
                    "type": "string",
                    "description": "条目的名称"
                }
            }
        }
    }
]

在扩展中映射一个模式

模式和模式关联也可以通过扩展来定义。查看 jsonValidation 贡献点

文件匹配语法

文件匹配语法支持通配符'*'. 另外,你也可以定义排除模式,以'!'开头。对于一个关联匹配,至少需要一个模式匹配,并且最后一个匹配的模式不能是排除模式。

  "json.schemas": [
    {
      "fileMatch": [
        "/receipts/*.json",
        "!/receipts/*.excluded.json"
      ],
      "url": "./receipts.schema.json"
    }
  ]

在JSON模式中定义片段

JSON schemas描述JSON文件的形状,以及值集和默认值,这些用于由JSON语言支持提供完成建议。如果您是schema的作者,并且希望提供更加定制化的完成建议,您还可以在schema中指定snippets。

以下示例显示了一个定义片段的键盘快捷键设置文件的模式:

{
    "type": "array",
    "title": "Keyboard shortcuts configuration",
    "items": {
        "type": "object",
        "required": ["key"],
        "defaultSnippets": [
            {
                "label": "New keyboard shortcut",
                "description": "Binds a key to a command for a given state",
                "body": { "key": "$1", "command": "$2", "当": "$3" }
            }
        ],
        "属性": {
            "键": {
                "类型": "字符串"
            }
            ...
        }
    }
}

这是一个JSON模式中的示例:

默认的JSON模式片段

使用属性默认片段指定任何数量的片段用于给定的JSON对象。

  • Tab描述将在完成选择对话框中显示。如果未提供标签,则将片段的字符串化对象表示作为标签显示。
  • 身体 是用户选择完成时被串化并插入的JSON对象。片段语法 可以在字符串字面量中使用来定义制表位、占位符和变量。如果一个字符串以 输入:^, 字符串内容将按原样插入,而不是字符串化。您可以使用此功能指定数字和布尔值的片段。

请注意默认片段不是JSON模式规范的一部分,而是VS Code特定的模式扩展。

在悬停中使用丰富的格式

VS Code 将使用标准描述 字段来自 JSON Schema 规范,以便在悬停和自动完成期间提供有关属性的信息。

如果你想让你的描述支持像链接这样的格式,你可以通过使用Markdown来选择启用markdown描述财产。

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "条目的名称",
      "markdownDescription": "条目的名称。 [查看文档](https://example.com)"
    }
  }
}

请注意markdown描述不是JSON模式规范的一部分,而是VS Code特定的模式扩展。

离线模式

json.schemaDownload.enable
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
控制是否从远程获取JSON schemas的JSON扩展。对不起,我无法处理你提供的内容。对不起,我无法访问特定的网页内容或链接。如果你能提供具体的文本内容,我可以帮助你进行翻译。输入:.

当当前编辑器希望使用无法下载的模式时,状态栏中将显示一个警告三角形。