Skip to content

JSON Plugin

Rules for linting .json files containing arbitrary data in the JavaScript Object Notation (JSON) format.
This plugin comes packaged with the flint npm package.

Flint’s JSON plugin provides the following preset:

PresetRecommendedDescription
logical✅ AlwaysCommon rules for finding bugs and good practices in JSON files.

Flint recommends using the logical preset:

flint.config.ts
import {
function defineConfig(definition: ConfigDefinition): Config

Defines a new linter configuration for a Flint config file.

@seehttps://flint.fyi/configuration flint.fyi/configuration

defineConfig
,
const json: Plugin<RuleAbout, "all", [Rule<{
readonly description: "Reports unnecessary duplicate keys that override previous values.";
readonly id: "keyDuplicates";
readonly presets: ["logical", "logicalStrict"];
} & {
presets?: ("logical" | "logicalStrict")[];
url: string;
}, object, object, "duplicateKey", {
readonly allowKeys: ZodDefault<ZodArray<ZodString>>;
}>, Rule<{
readonly description: "Reports object keys that are not normalized using Unicode normalization forms.";
readonly id: "keyNormalization";
readonly presets: [...];
} & {
presets?: ("logical" | "logicalStrict")[];
url: string;
}, object, object, "unnormalizedKey", {
...;
}>, Rule<...>]>
json
} from "flint";
export default
function defineConfig(definition: ConfigDefinition): Config

Defines a new linter configuration for a Flint config file.

@seehttps://flint.fyi/configuration flint.fyi/configuration

defineConfig
({
ConfigDefinition.use: ConfigUseDefinition[]

Specifies the files to be linted alongside the rules and settings to lint with.

@seehttps://flint.fyi/configuration#use flint.fyi/configuration#use

use
: [
{
ConfigUseDefinition.files: AnyLevelDeep<FilesValue>

A list of glob patterns describing which file(s) to lint.

@seehttps://flint.fyi/configuration#files flint.fyi/configuration#files

files
:
const json: Plugin<RuleAbout, "all", [Rule<{
readonly description: "Reports unnecessary duplicate keys that override previous values.";
readonly id: "keyDuplicates";
readonly presets: ["logical", "logicalStrict"];
} & {
presets?: ("logical" | "logicalStrict")[];
url: string;
}, object, object, "duplicateKey", {
readonly allowKeys: ZodDefault<ZodArray<ZodString>>;
}>, Rule<{
readonly description: "Reports object keys that are not normalized using Unicode normalization forms.";
readonly id: "keyNormalization";
readonly presets: [...];
} & {
presets?: ("logical" | "logicalStrict")[];
url: string;
}, object, object, "unnormalizedKey", {
...;
}>, Rule<...>]>
json
.
Plugin<RuleAbout, "all", [Rule<{ readonly description: "Reports unnecessary duplicate keys that override previous values."; readonly id: "keyDuplicates"; readonly presets: [...]; } & { ...; }, object, object, "duplicateKey", { ...; }>, Rule<...>, Rule<...>]>.files: Record<"all", FilesValue>

Selectors of files this plugin suggests applying its rules to.

@seehttps://flint.fyi/glossary#files flint.fyi/glossary#files

files
.
all: FilesValue
all
,
ConfigUseDefinition.rules: AnyLevelDeep<ConfigRuleDefinition>

Any number of rules and/or presets of rules to enable for those files.

@seehttps://flint.fyi/configuration#rules flint.fyi/configuration#rules

rules
:
const json: Plugin<RuleAbout, "all", [Rule<{
readonly description: "Reports unnecessary duplicate keys that override previous values.";
readonly id: "keyDuplicates";
readonly presets: ["logical", "logicalStrict"];
} & {
presets?: ("logical" | "logicalStrict")[];
url: string;
}, object, object, "duplicateKey", {
readonly allowKeys: ZodDefault<ZodArray<ZodString>>;
}>, Rule<{
readonly description: "Reports object keys that are not normalized using Unicode normalization forms.";
readonly id: "keyNormalization";
readonly presets: [...];
} & {
presets?: ("logical" | "logicalStrict")[];
url: string;
}, object, object, "unnormalizedKey", {
...;
}>, Rule<...>]>
json
.
Plugin<RuleAbout, "all", [Rule<{ readonly description: "Reports unnecessary duplicate keys that override previous values."; readonly id: "keyDuplicates"; readonly presets: [...]; } & { ...; }, object, object, "duplicateKey", { ...; }>, Rule<...>, Rule<...>]>.presets: PluginPresets<RuleAbout, "logical" | "logicalStrict">

Preset lists of rules to enable on files.

@seehttps://flint.fyi/glossary#preset flint.fyi/glossary#preset

presets
.
logical: Rule<RuleAbout, object, object, string, AnyOptionalSchema | undefined>[]
logical
,
},
],
});

Rules that find bugs and enforce good JSON practices for most-to-all JSON files.

flint.config.ts
import {
function defineConfig(definition: ConfigDefinition): Config

Defines a new linter configuration for a Flint config file.

@seehttps://flint.fyi/configuration flint.fyi/configuration

defineConfig
,
const json: Plugin<RuleAbout, "all", [Rule<{
readonly description: "Reports unnecessary duplicate keys that override previous values.";
readonly id: "keyDuplicates";
readonly presets: ["logical", "logicalStrict"];
} & {
presets?: ("logical" | "logicalStrict")[];
url: string;
}, object, object, "duplicateKey", {
readonly allowKeys: ZodDefault<ZodArray<ZodString>>;
}>, Rule<{
readonly description: "Reports object keys that are not normalized using Unicode normalization forms.";
readonly id: "keyNormalization";
readonly presets: [...];
} & {
presets?: ("logical" | "logicalStrict")[];
url: string;
}, object, object, "unnormalizedKey", {
...;
}>, Rule<...>]>
json
} from "flint";
export default
function defineConfig(definition: ConfigDefinition): Config

Defines a new linter configuration for a Flint config file.

@seehttps://flint.fyi/configuration flint.fyi/configuration

defineConfig
({
ConfigDefinition.use: ConfigUseDefinition[]

Specifies the files to be linted alongside the rules and settings to lint with.

@seehttps://flint.fyi/configuration#use flint.fyi/configuration#use

use
: [
{
ConfigUseDefinition.files: AnyLevelDeep<FilesValue>

A list of glob patterns describing which file(s) to lint.

@seehttps://flint.fyi/configuration#files flint.fyi/configuration#files

files
:
const json: Plugin<RuleAbout, "all", [Rule<{
readonly description: "Reports unnecessary duplicate keys that override previous values.";
readonly id: "keyDuplicates";
readonly presets: ["logical", "logicalStrict"];
} & {
presets?: ("logical" | "logicalStrict")[];
url: string;
}, object, object, "duplicateKey", {
readonly allowKeys: ZodDefault<ZodArray<ZodString>>;
}>, Rule<{
readonly description: "Reports object keys that are not normalized using Unicode normalization forms.";
readonly id: "keyNormalization";
readonly presets: [...];
} & {
presets?: ("logical" | "logicalStrict")[];
url: string;
}, object, object, "unnormalizedKey", {
...;
}>, Rule<...>]>
json
.
Plugin<RuleAbout, "all", [Rule<{ readonly description: "Reports unnecessary duplicate keys that override previous values."; readonly id: "keyDuplicates"; readonly presets: [...]; } & { ...; }, object, object, "duplicateKey", { ...; }>, Rule<...>, Rule<...>]>.files: Record<"all", FilesValue>

Selectors of files this plugin suggests applying its rules to.

@seehttps://flint.fyi/glossary#files flint.fyi/glossary#files

files
.
all: FilesValue
all
,
ConfigUseDefinition.rules: AnyLevelDeep<ConfigRuleDefinition>

Any number of rules and/or presets of rules to enable for those files.

@seehttps://flint.fyi/configuration#rules flint.fyi/configuration#rules

rules
:
const json: Plugin<RuleAbout, "all", [Rule<{
readonly description: "Reports unnecessary duplicate keys that override previous values.";
readonly id: "keyDuplicates";
readonly presets: ["logical", "logicalStrict"];
} & {
presets?: ("logical" | "logicalStrict")[];
url: string;
}, object, object, "duplicateKey", {
readonly allowKeys: ZodDefault<ZodArray<ZodString>>;
}>, Rule<{
readonly description: "Reports object keys that are not normalized using Unicode normalization forms.";
readonly id: "keyNormalization";
readonly presets: [...];
} & {
presets?: ("logical" | "logicalStrict")[];
url: string;
}, object, object, "unnormalizedKey", {
...;
}>, Rule<...>]>
json
.
Plugin<RuleAbout, "all", [Rule<{ readonly description: "Reports unnecessary duplicate keys that override previous values."; readonly id: "keyDuplicates"; readonly presets: [...]; } & { ...; }, object, object, "duplicateKey", { ...; }>, Rule<...>, Rule<...>]>.presets: PluginPresets<RuleAbout, "logical" | "logicalStrict">

Preset lists of rules to enable on files.

@seehttps://flint.fyi/glossary#preset flint.fyi/glossary#preset

presets
.
logical: Rule<RuleAbout, object, object, string, AnyOptionalSchema | undefined>[]
logical
,
},
],
});
Flint RulePreset
keyDuplicatesReports unnecessary duplicate keys that override previous values.logical
keyNormalizationReports object keys that are not normalized using Unicode normalization forms.logical
valueSafetyReports JSON values that are unsafe for data interchange.logical

Flint’s JSON plugin provides the following files selector:

  • all: **/*.json
Made with ❤️‍🔥 around the world by the Flint team and contributors.