JSON - Zed

# 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` 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 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: