ToolDeck

JSON Schema Validator

Validera JSON-data mot ett JSON Schema (Draft 7)

Prova ett exempel

JSON-data

JSON Schema

Körs lokalt · Säkert att klistra in hemligheter
Körs lokalt · Säkert att klistra in hemligheter

Vad är JSON Schema-validering?

JSON Schema-validering är processen att kontrollera om ett JSON-dokument uppfyller en uppsättning strukturella villkor och värdebegränsningar definierade i ett JSON Schema. Schemat i sig är ett JSON-dokument som beskriver den förväntade strukturen hos din data: vilka egenskaper som är obligatoriska, vilka typer de måste ha, tillåtna intervall för tal, strängmönster, arraylängder med mera. JSON Schema-specifikationen underhålls på json-schema.org och publiceras som en serie IETF-utkast; Draft 7 och Draft 2020-12 är de mest använda.

Vanlig JSON-validering kontrollerar bara syntax (är parenteserna matchade? är strängar citerade?), men schemavalidering går längre. Den besvarar frågor som: innehåller svaret från detta API ett fält "id" som alltid är ett heltal? Är fältet "status" ett av tre tillåtna värden? Har nästlade objekt rätt struktur? Den här typen av strukturell verifiering fångar fel som syntaxkontroller missar helt, eftersom syntaktiskt giltig JSON ändå kan vara semantiskt felaktig för din applikation.

JSON Schema används i OpenAPI/Swagger-definitioner, validering av konfigurationsfiler, formulärvalidering, dokumentbegränsningar i databaser och automatiserad testning. Verktyg som Ajv (JavaScript), jsonschema (Python) och check-jsonschema (CLI) implementerar specifikationen så att du kan validera data programmatiskt. Den här online-validatorn låter dig klistra in både ett schema och ett datadokument för att omedelbart kontrollera överensstämmelse — utan att installera något bibliotek.

Varför använda en online JSON Schema-validator?

Att skriva scheman och felsöka valideringsfel för hand är tidskrävande. En online JSON Schema-validator ger dig omedelbar återkoppling på om din data matchar ditt schema, med tydliga felmeddelanden som pekar på exakt vilken egenskap som misslyckades.

Omedelbar valideringsåterkoppling
Klistra in ditt schema och din data och se valideringsresultaten direkt. Varje fel visar JSON-sökvägen och den specifika begränsning som inte uppfylldes, så att du kan åtgärda problem utan att behöva tolka biblioteksutdata.
🔒
Integritetsvänlig — allt körs i webbläsaren
Din JSON-data lämnar aldrig webbläsaren. All validering körs lokalt i JavaScript. Ingen server, inga loggar, ingen datalagring. Säkert för scheman som beskriver interna API:er eller innehåller proprietära fältnamn.
🎯
Draftkännedom vid validering
Validatorn hanterar Draft 7-nyckelord inklusive type, required, properties, enum, pattern, minimum/maximum, items, anyOf, oneOf, allOf och additionalProperties. Testa ditt schema här innan du kopplar det till din byggpipeline eller testsvit.
📋
Inget konto eller installation krävs
Öppna sidan, klistra in din JSON och validera. Inget npm install, inget pip-paket, ingen Docker-avbildning. Praktiskt när du behöver snabbt kontrollera ett schema på en maskin utan utvecklingsverktyg installerade.

Användningsfall för JSON Schema-validering

API-kontraktstestning
Validera API-svar mot schemat definierat i din OpenAPI-specifikation. Fånga brytande ändringar — som ett fält som byter typ från heltal till sträng — innan de når produktion.
Verifiering av konfigurationsfiler
Kontrollera att JSON-konfigurationsfiler för CI/CD-pipelines, Kubernetes-manifest eller applikationsinställningar matchar förväntat schema innan du checkar in. Förebygger distributionsfel orsakade av saknade eller felskrivna nycklar.
Grindkontroll i DevOps-pipelines
Lägg till schemavalidering som ett CI-steg för att avvisa nyttolaster som bryter mot kontraktet. Fungerar för Terraform-variabelfiler, GitHub Actions-indata eller all strukturerad JSON som konsumeras av automatisering.
QA och granskning av testdata
Verifiera att testfixtures och mock-datafiler stämmer överens med samma schema som din applikation förväntar sig. Felmatchad testdata är en vanlig källa till falska positiva testresultat.
Inmatning i datapipelines
Validera inkommande JSON-poster vid ingången av en datapipeline. Schemavalidering filtrerar bort felformade händelser innan de når ditt datalager, vilket minskar efterbearbetningskostnader.
Lärande av JSON Schema-syntax
Experimentera med schemanyckelord interaktivt. Skriv ett schema, klistra in testdata och se vilka begränsningar som uppfylls eller misslyckas. Snabbare än att skriva ett skript och köra det från terminalen varje gång.

Referens för JSON Schema-nyckelord

Ett JSON Schema byggs upp av nyckelord som var och ett ställer ett villkor på den validerade datan. Tabellen nedan listar de vanligast använda nyckelorden i Draft 7 och senare. Varje nyckelord kan kombineras med andra i samma schemaobjekt.

NyckelordSyfteExempel
typeRestricts the data type"type": "string"
propertiesDefines expected object keys and their schemas"properties": { "name": { "type": "string" } }
requiredLists mandatory properties"required": ["id", "name"]
itemsSchema for array elements"items": { "type": "number" }
enumRestricts value to a fixed set"enum": ["active", "inactive"]
patternRegex constraint on strings"pattern": "^[A-Z]{2}\\d{4}$"
minimum / maximumNumeric range bounds"minimum": 0, "maximum": 100
minLength / maxLengthString length bounds"minLength": 1, "maxLength": 255
$refReuses another schema by URI"$ref": "#/$defs/address"
additionalPropertiesControls extra keys in objects"additionalProperties": false
anyOf / oneOf / allOfCombines multiple schemas logically"anyOf": [{ "type": "string" }, { "type": "null" }]
if / then / elseConditional schema application"if": { "properties": { "type": { "const": "email" } } }

Jämförelse av JSON Schema-utkast: Draft 7 vs 2019-09 vs 2020-12

JSON Schema har genomgått flera utkastversioner. Draft 7 (publicerat 2018) har bredast stöd i verktyg. Draft 2019-09 introducerade $defs (ersätter definitions), unevaluatedProperties och $recursiveRef. Draft 2020-12 (den senaste stabila versionen) ersatte $recursiveRef med $dynamicRef och introducerade prefixItems för tuppelvalidering. Kontrollera att ditt valideringsbibliotek stöder det utkast du väljer. Ajv stöder alla tre. Pythons jsonschema-bibliotek stöder upp till 2020-12 sedan version 4.0.

FunktionDraft 7Draft 2019-09Draft 2020-12
$schema URIdraft-07/schema#2019-09/schema2020-12/schema
if / then / elseYesYesYes
$defs (definitions)definitions$defs$defs
$ref alongside keysNo (sibling ignored)YesYes
$dynamicRefNoNo ($recursiveRef)Yes
prefixItemsNo (use items array)No (use items array)Yes
unevaluatedPropertiesNoYesYes
$vocabularyNoYesYes

Kodexempel

Dessa exempel visar hur man validerar JSON mot ett schema programmatiskt. Varje exempel använder ett välunderhållet bibliotek för sitt språkekosystem.

JavaScript (Ajv)
import Ajv from 'ajv';

const ajv = new Ajv();

const schema = {
  type: 'object',
  properties: {
    name: { type: 'string', minLength: 1 },
    age: { type: 'integer', minimum: 0 },
    email: { type: 'string', format: 'email' }
  },
  required: ['name', 'email'],
  additionalProperties: false
};

const data = { name: 'Alice', age: 30, email: 'alice@example.com' };

const validate = ajv.compile(schema);
const valid = validate(data);
console.log(valid);          // → true
console.log(validate.errors); // → null

// Invalid data — missing required "email"
validate({ name: 'Bob', age: 25 });
console.log(validate.errors);
// → [{ instancePath: '', keyword: 'required', params: { missingProperty: 'email' } }]
Python (jsonschema)
from jsonschema import validate, ValidationError

schema = {
    "type": "object",
    "properties": {
        "name": {"type": "string", "minLength": 1},
        "age": {"type": "integer", "minimum": 0},
        "tags": {
            "type": "array",
            "items": {"type": "string"},
            "uniqueItems": True
        }
    },
    "required": ["name"]
}

# Valid data
validate(instance={"name": "Alice", "age": 30, "tags": ["admin"]}, schema=schema)
# → No exception raised

# Invalid data — wrong type for "age"
try:
    validate(instance={"name": "Alice", "age": "thirty"}, schema=schema)
except ValidationError as e:
    print(e.message)
    # → 'thirty' is not of type 'integer'
    print(e.json_path)
    # → $.age
Go (santhosh-tekuri/jsonschema)
package main

import (
    "fmt"
    "strings"
    "github.com/santhosh-tekuri/jsonschema/v5"
)

func main() {
    schemaJSON := `{
        "type": "object",
        "properties": {
            "id": { "type": "integer" },
            "status": { "enum": ["active", "inactive"] }
        },
        "required": ["id", "status"]
    }`

    compiler := jsonschema.NewCompiler()
    compiler.AddResource("schema.json", strings.NewReader(schemaJSON))
    schema, _ := compiler.Compile("schema.json")

    // Valid data
    data := map[string]interface{}{"id": 1, "status": "active"}
    err := schema.Validate(data)
    fmt.Println(err) // → <nil>

    // Invalid — missing "status"
    bad := map[string]interface{}{"id": 2}
    err = schema.Validate(bad)
    fmt.Println(err) // → validation failed: missing properties: 'status'
}
CLI (check-jsonschema)
# Install via pip
pip install check-jsonschema

# Validate a file against a schema
check-jsonschema --schemafile schema.json data.json
# → ok -- validation done

# Validate against a remote schema (e.g., GitHub Actions workflow)
check-jsonschema --builtin-schema vendor.github-workflows my-workflow.yml

# Validate multiple files at once
check-jsonschema --schemafile schema.json file1.json file2.json file3.json

Vanliga frågor

Vad är skillnaden mellan JSON-validering och JSON Schema-validering?
JSON-validering kontrollerar om en sträng är giltig JSON-syntax: korrekt nästlade parenteser, citerade nycklar, inga avslutande kommatecken. JSON Schema-validering går ett steg längre och kontrollerar om den tolkade JSON-datan matchar ett strukturkontrakt: rätt typer, obligatoriska fält, värden inom tillåtna intervall. Du behöver giltig JSON innan du kan tillämpa ett schema, men giltig JSON kan ändå misslyckas schemavalidering.
Vilket JSON Schema-utkast bör jag använda?
Draft 7 är det säkraste standardvalet. Det har bredast biblioteksstöd över olika programspråk och täcker de nyckelord de flesta projekt behöver: type, properties, required, enum, pattern, anyOf, oneOf, allOf och $ref. Använd Draft 2020-12 om du behöver funktioner som prefixItems för tuppelvalidering, $dynamicRef för utbyggbara scheman eller unevaluatedProperties för strikta objektstrukturer. Kontrollera din valideringsbiblioteks dokumentation för att bekräfta draftstöd innan du uppgraderar.
Hur fungerar $ref i JSON Schema?
Nyckelordet $ref låter dig referera till ett annat schema via URI istället för att duplicera det. Ett värde som "$ref": "#/$defs/address" pekar på ett schema definierat i $defs-sektionen i samma dokument. Du kan också referera till externa filer med "$ref": "https://example.com/schemas/address.json". I Draft 7 ersätter $ref alla syskonanyckelord i samma objekt. I Draft 2019-09 och senare tillämpas syskonanyckelord tillsammans med $ref.
Vad är skillnaden mellan anyOf, oneOf och allOf?
allOf kräver att datan matchar varje delschema i arrayen. anyOf kräver matchning mot minst ett delschema. oneOf kräver matchning mot exakt ett delschema och misslyckas om datan matchar noll eller fler än ett. För nullbara fält är anyOf med en typ och null vanligt: {"anyOf": [{"type": "string"}, {"type": "null"}]}. Använd oneOf när delscheman är ömsesidigt uteslutande, som märkta unioner.
Kan JSON Schema validera nästlade objekt och arrayer?
Ja. Använd nyckelordet properties för att definiera scheman för nästlade objektnycklar och nyckelordet items för att definiera ett schema som varje arrayelement måste matcha. Du kan nästla dessa till valfritt djup. För arrayer där varje position har ett eget schema (tupplar) använder du prefixItems i Draft 2020-12 eller array-formen av items i Draft 7.
Skickas datan jag klistrar in i det här verktyget till en server?
Nej. Validatorn körs helt i din webbläsare via JavaScript. Din JSON-data och ditt schema skickas aldrig till någon server. Du kan verifiera detta genom att öppna webbläsarens nätverksgranskare medan du använder verktyget.
Hur validerar jag JSON Schema i en CI/CD-pipeline?
Använd en CLI-validator som check-jsonschema (Python/pip) eller ajv-cli (Node.js/npm). Båda tar emot en schemafil och en eller flera datafiler som argument. Lägg till valideringskommandot som ett steg i din CI-konfiguration. Om valideringen misslyckas avslutas processen med en icke-noll-kod, vilket blockerar pipelinen. För GitHub Actions kan du också använda check-jsonschema-action direkt.