no-generic-json-parser
Parse known JSON fields with an object schema instead of an open JSON or record parser.
Why
An open JSON parser checks serialization or value kinds without declaring required fields, leaving application reads outside the validation contract.
Fix
Define a focused z.object schema for the fields being read and infer its output type. Keep generic JSON at deliberate opaque forwarding or storage boundaries.
Examples
import { z } from "zod";const JsonSchema = z.record(z.string(), z.unknown());function load(raw: unknown) { const body = JsonSchema.parse(raw); return body.version;}import { z } from "zod";const VersionSchema = z.object({ version: z.number().int().positive() });function load(raw: unknown) { return VersionSchema.parse(raw).version;}import { z } from "zod";function load(raw: unknown) { const result = z.record(z.string(), z.unknown()).safeParse(raw); if (!result.success) return; return result.data.id;}import { z } from "zod";function load(raw: unknown) { const result = z.object({ id: z.string() }).safeParse(raw); if (!result.success) return; return result.data.id;}