JSON

JSON support is available natively in Zed.

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: