JSON
JSON support is available natively in Zed.
- Tree-sitter: tree-sitter/tree-sitter-json
- Language Server: zed-industries/json-language-server
JSON Lines Preview
Open a .jsonl or .ndjson file and run tabular data: open preview to view it as a read-only table. Use tabular data: open preview to the side to keep the source visible alongside the preview.
Each nonblank line must contain a JSON object. Top-level keys become columns in the order they first appear in the file. Keys from the first record keep their source order, and new keys from later records are appended to the right. Missing fields appear as empty cells. Values retain their JSON representation, so null, "null", and "" remain distinct; nested objects and arrays appear as compact JSON.
The preview updates as you edit the source. Invalid records show an error with the source line number. Sorting compares the displayed text, and changing the column names or order clears active sorting and filters.
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 configuration file:
{
"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, 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 associate JSON Schemas with file paths using relative paths in your language server settings. Zed resolves paths relative to your project root:
"lsp": {
"json-language-server": {
"settings": {
"json": {
"schemas": [
{
"fileMatch": ["config/*.json"],
"url": "./schemas/custom-schema.json"
},
{
"fileMatch": ["*.config.json"],
"url": "~/global-schemas/shared.json"
},
{
"fileMatch": ["*/*.luarc.json"],
"url": "https://raw.githubusercontent.com/sumneko/vscode-lua/master/setting/schema.json"
}
]
}
}
}
}
Paths starting with ./ resolve relative to the worktree root. Paths starting with ~/ expand to your home directory.
You can also pass any of the supported settings to json-language-server by specifying them in your Zed settings.json: