JSON
JSON support is available natively in Zed.
- Tree Sitter: tree-sitter/tree-sitter-json
- Language Server: zed-industries/json-language-server
JSONC
Zed also supports a super-set of JSON called JSONC, which allows single line comments (//
) in JSON files.
While editing these files you can use cmd-/
(macOS) or ctrl-/
(Linux) to toggle comments on the current line or selection.
JSONC Prettier Formatting
If you use files with the *.jsonc
extension when using Format Document
or have format_on_save
enabled, Zed invokes Prettier as the formatter. Prettier has an outstanding issue where it will add trailing commas to files with a jsonc
extension. JSONC files which have a .json
extension are unaffected.
To workaround this behavior you can add the following to your .prettierrc
{
"overrides": [
{
"files": ["*.jsonc"],
"options": {
"parser": "json",
"trailingComma": "none"
}
}
]
}
JSON Language Server
Zed automatically out of the box supports JSON Schema validation of package.json
and tsconfig.json
files, but json-language-server
can use JSON Schema definitions in project files, from the JSON Schema Store or other publicly available URLs for JSON validation.
Inline Schema Specification
To specify a schema inline with your JSON files, add a $schema
top level key linking to your json schema file.
For example to for a .luarc.json
for use with lua-language-server:
{
"$schema": "https://raw.githubusercontent.com/sumneko/vscode-lua/master/setting/schema.json",
"runtime.version": "Lua 5.4"
}
Schema Specification via Settings
You can alternatively associate JSON Schemas with file paths by via Zed LSP settings.
To
"lsp": {
"json-language-server": {
"settings": {
"json": {
"schemas": [
{
"fileMatch": ["*/*.luarc.json"],
"url": "https://raw.githubusercontent.com/sumneko/vscode-lua/master/setting/schema.json"
}
]
}
}
}
}
You can also pass any of the supported settings to json-language-server by specifying them in your Zed settings.json: