JSON, JSONC and JSON5 parser for use with ESLint plugins.
72
stars
336
commits
TypeScript
primary language
Sep 4, 2026
updated
JSON, JSONC and JSON5 parser for use with ESLint plugins.
This parser allows us to lint JSON, JSONC and JSON5 files. This parser and the rules of eslint-plugin-jsonc would catch some of the mistakes and code style violations.
See eslint-plugin-jsonc for details.
npm i --save-dev jsonc-eslint-parser
In your ESLint configuration file, set the parser property:
import * as jsoncParser from "jsonc-eslint-parser";
export default [
{
// ...
// Add the following settings.
files: ["**/*.json", "**/*.json5"], // Specify the extension or pattern you want to parse as JSON.
languageOptions: {
parser: jsoncParser, // Set this parser.
}
},
];
In your ESLint configuration file, set the overrides > parser property:
{
// ...
// Add the following settings.
"overrides": [
{
"files": ["*.json", "*.json5"], // Specify the extension or pattern you want to parse as JSON.
"parser": "jsonc-eslint-parser", // Set this parser.
},
],
}
The following additional configuration options are available by specifying them in parserOptions in your ESLint configuration file.
{
// Additional configuration options
"parserOptions": {
"jsonSyntax": "JSON5"
}
}
parserOptions.jsonSyntaxSet to "JSON", "JSONC" or "JSON5". Select the JSON syntax you are using.
If not specified, all syntaxes that express static values are accepted. For example, template literals without interpolation.
Note : Recommended to loosen the syntax checking by the parser and use check rules of eslint-plugin-jsonc to automatically fix it.
parseJSON(code, options?)Parses the given JSON source code and returns the AST.
import { parseJSON } from "jsonc-eslint-parser";
const ast = parseJSON('{"key": "value"}', { jsonSyntax: "JSON" });
console.log(ast);
Parameters:
code (string): The JSON source code to parse.options (object, optional): Parser options.
jsonSyntax ("JSON" | "JSONC" | "JSON5"): The JSON syntax to use.Returns: JSONProgram - The root AST node.
parseForESLint(code, options?)Parses the given JSON source code for ESLint. This is the main parser function used by ESLint.
import { parseForESLint } from "jsonc-eslint-parser";
const result = parseForESLint('{"key": "value"}', { jsonSyntax: "JSON" });
console.log(result.ast);
console.log(result.services);
console.log(result.visitorKeys);
Parameters:
code (string): The JSON source code to parse.options (object, optional): Parser options (same as parseJSON).Returns: An object containing:
ast: The root AST node.services: An object with helper methods like getStaticJSONValue().visitorKeys: Visitor keys for traversing the AST.tokenize(code, options?)Tokenizes the given JSON source code and returns an array of tokens.
import { tokenize } from "jsonc-eslint-parser";
const tokens = tokenize('{"key": "value"}', { jsonSyntax: "JSON" });
console.log(tokens);
// [
// { type: 'Punctuator', value: '{', range: [0, 1], loc: {...} },
// { type: 'String', value: '"key"', range: [1, 6], loc: {...} },
// { type: 'Punctuator', value: ':', range: [6, 7], loc: {...} },
// { type: 'String', value: '"value"', range: [8, 15], loc: {...} },
// { type: 'Punctuator', value: '}', range: [15, 16], loc: {...} }
// ]
// Include comments in the result
const tokensWithComments = tokenize('{"key": "value" /* comment */}', {
jsonSyntax: "JSONC",
includeComments: true
});
Parameters:
code (string): The JSON source code to tokenize.options (object, optional): Parser options.
jsonSyntax ("JSON" | "JSONC" | "JSON5"): The JSON syntax to use.includeComments (boolean): If true, comments are included in the result array.Returns: Token[] or (Token | Comment)[] - An array of tokens, optionally including comments.
jsonc-eslint-parser follows Semantic Versioning.
See the LICENSE file for license rights and limitations (MIT).
ota-meshi/toml-eslint-parser
A TOML parser that produces output compatible with ESLint
26
ota-meshi/eslint-plugin-yml
This ESLint plugin provides linting rules for YAML.
187
TypeScript
81.0%
Vue
11.6%
JavaScript
5.1%
HTML
2.3%
JSON, JSONC and JSON5 parser for use with ESLint plugins.
72
stars
336
commits
TypeScript
primary language
Sep 4, 2026
updated
JSON, JSONC and JSON5 parser for use with ESLint plugins.
This parser allows us to lint JSON, JSONC and JSON5 files. This parser and the rules of eslint-plugin-jsonc would catch some of the mistakes and code style violations.
See eslint-plugin-jsonc for details.
npm i --save-dev jsonc-eslint-parser
In your ESLint configuration file, set the parser property:
import * as jsoncParser from "jsonc-eslint-parser";
export default [
{
// ...
// Add the following settings.
files: ["**/*.json", "**/*.json5"], // Specify the extension or pattern you want to parse as JSON.
languageOptions: {
parser: jsoncParser, // Set this parser.
}
},
];
In your ESLint configuration file, set the overrides > parser property:
{
// ...
// Add the following settings.
"overrides": [
{
"files": ["*.json", "*.json5"], // Specify the extension or pattern you want to parse as JSON.
"parser": "jsonc-eslint-parser", // Set this parser.
},
],
}
The following additional configuration options are available by specifying them in parserOptions in your ESLint configuration file.
{
// Additional configuration options
"parserOptions": {
"jsonSyntax": "JSON5"
}
}
parserOptions.jsonSyntaxSet to "JSON", "JSONC" or "JSON5". Select the JSON syntax you are using.
If not specified, all syntaxes that express static values are accepted. For example, template literals without interpolation.
Note : Recommended to loosen the syntax checking by the parser and use check rules of eslint-plugin-jsonc to automatically fix it.
parseJSON(code, options?)Parses the given JSON source code and returns the AST.
import { parseJSON } from "jsonc-eslint-parser";
const ast = parseJSON('{"key": "value"}', { jsonSyntax: "JSON" });
console.log(ast);
Parameters:
code (string): The JSON source code to parse.options (object, optional): Parser options.
jsonSyntax ("JSON" | "JSONC" | "JSON5"): The JSON syntax to use.Returns: JSONProgram - The root AST node.
parseForESLint(code, options?)Parses the given JSON source code for ESLint. This is the main parser function used by ESLint.
import { parseForESLint } from "jsonc-eslint-parser";
const result = parseForESLint('{"key": "value"}', { jsonSyntax: "JSON" });
console.log(result.ast);
console.log(result.services);
console.log(result.visitorKeys);
Parameters:
code (string): The JSON source code to parse.options (object, optional): Parser options (same as parseJSON).Returns: An object containing:
ast: The root AST node.services: An object with helper methods like getStaticJSONValue().visitorKeys: Visitor keys for traversing the AST.tokenize(code, options?)Tokenizes the given JSON source code and returns an array of tokens.
import { tokenize } from "jsonc-eslint-parser";
const tokens = tokenize('{"key": "value"}', { jsonSyntax: "JSON" });
console.log(tokens);
// [
// { type: 'Punctuator', value: '{', range: [0, 1], loc: {...} },
// { type: 'String', value: '"key"', range: [1, 6], loc: {...} },
// { type: 'Punctuator', value: ':', range: [6, 7], loc: {...} },
// { type: 'String', value: '"value"', range: [8, 15], loc: {...} },
// { type: 'Punctuator', value: '}', range: [15, 16], loc: {...} }
// ]
// Include comments in the result
const tokensWithComments = tokenize('{"key": "value" /* comment */}', {
jsonSyntax: "JSONC",
includeComments: true
});
Parameters:
code (string): The JSON source code to tokenize.options (object, optional): Parser options.
jsonSyntax ("JSON" | "JSONC" | "JSON5"): The JSON syntax to use.includeComments (boolean): If true, comments are included in the result array.Returns: Token[] or (Token | Comment)[] - An array of tokens, optionally including comments.
jsonc-eslint-parser follows Semantic Versioning.
See the LICENSE file for license rights and limitations (MIT).
ota-meshi/toml-eslint-parser
A TOML parser that produces output compatible with ESLint
26
ota-meshi/eslint-plugin-yml
This ESLint plugin provides linting rules for YAML.
187
TypeScript
81.0%
Vue
11.6%
JavaScript
5.1%
HTML
2.3%