JSON-validering

Avansert JSON-syntakssjekker og skjema-validator på nett – helt nettleserbasert og personvernfokusert.

Valider JSON-en din umiddelbart

Valider JSON med skjema
Støttet skjema versjon: Draft-07.

Denne gratis nettbaserte JSON-validatoren lar deg umiddelbart sjekke JSON-dataene dine for syntaksfeil og strukturelle problemer. Enten du validerer rå API-responser, konfigurasjonsfiler eller strukturerte datalaster, fremhever verktøyet problemer i sanntid og tilbyr til og med automatiske rettelser. For strengere validering kan du legge til et JSON-skjema og håndheve regler som obligatoriske felt, spesifikke datatyper og formater (e-post, URI osv.). Verktøyet er fullt kompatibelt med JSON Schema Draft-07. All behandling skjer i nettleseren din – dataene dine forlater aldri maskinen din.

Hva er JSON-validering?

JSON (JavaScript Object Notation) er et mye brukt, lettvektig datautvekslingsformat, designet for å være både lett å lese for mennesker og enkelt for maskiner å analysere og generere. Hovedformålet er å representere strukturert data — objekter, matriser, strenger, tall, boolske verdier og null — på en språkuavhengig måte.

JSON-validering er prosessen med å programmessig verifisere at et JSON-dokument er både syntaktisk og strukturelt korrekt. Dette innebærer å kontrollere to hovedaspekter:

  • Syntaktisk validering: Sikrer at råteksten følger den formelle grammatikken som er definert i ECMA-404 JSON-spesifikasjonen. Parserne i de fleste moderne programmeringsspråk (for eksempel JSON.parse() i JavaScript, json.loads() i Python, JSONDecoder i Java) forventer gyldig syntaks og vil gi feil hvis inndataene er feilformatert.
  • Strukturell (Schema) Validering: Utover syntaks sjekker skjema-validering at JSON-dataene samsvarer med en forventet struktur, inkludert datatyper, påkrevde egenskaper, verdibegrensninger og nestede objekter/arrayer. Skjema-validering gjøres vanligvis ved bruk av JSON Schema, som definerer regler for hva som regnes som gyldige data.

Hvorfor validere JSON?

Validering av JSON er avgjørende overalt der data serialiseres for overføring, lagring eller kommunikasjon mellom tjenester. Viktige grunner inkluderer:

  • Feilforebygging: Oppdag og rapporter syntaksfeil (f.eks. manglende komma, ubalanserte parenteser, ugyldige tegn) tidlig – før data behandles.
  • Dataintegritet og sikkerhet: Avvis ugyldige eller ondsinnede JSON-payloads for å forhindre krasj i backend, injeksjonsangrep eller datakorrupsjon.
  • Typsikkerhet: Håndhev streng typetilpasning—sørg for for eksempel at et felt som forventes å være en boolsk verdi ikke sendes som en tekststreng, eller at UUID-er, e-poster og tall følger korrekt format.
  • Tverrspråklig kompatibilitet: Sikre at JSON som genereres i ett miljø (f.eks. Node.js) trygt kan brukes i et annet (f.eks. Python, Go, Java), og unngå feil ved serialisering/deserialisering.
  • Vedlikeholdbarhet og Robusthet: Validerte datastrukturer forbedrer sporbarheten og reduserer risikoen for vanskelig å feilsøke feil i konfigurasjonsfiler, logger eller API-forespørsler/-svar.
  • Personvern og sikkerhet: Validering kan utføres helt på klientsiden (i nettleseren), noe som forhindrer at rådata eller sensitiv informasjon forlater brukerens enhet under valideringen.

Vanlige JSON-valideringsfeil (med detaljerte eksempler)

Nøkler uten anførselstegn

Alle nøkler i JSON-objekter må være dobbeltanførte strenger.

{ navn: "Alice" }
{ "name": "Alice" }

Mange JSON-lignende formater (f.eks. JavaScript-objektlitteraler) tillater nøkler uten anførselstegn, men standard JSON gjør ikke det.

Enkelt anførselstegn

JSON-strenger må bruke doble anførselstegn; enkeltanførselstegn er ikke tillatt.

{ 'navn': 'Bob' }
{ "name": "Bob" }

Bruk av enkeltsitater vil føre til parserfeil i alle JSON-biblioteker som følger standarden.

Etterslepende kommaer

Ingen komma på slutten av det siste elementet i et objekt eller en liste.

{
  "a": 1,
  "b": 2,
}
{
  "a": 1,
  "b": 2
}

Etterslepende kommaer kan fungere i JavaScript, men ikke i strenge JSON-parsere.

Feil ved flukt av tegn

Anførselstegn og spesialtegn i strenger må unngås ved bruk av bakoverstrek (backslash).

{ "quote": "Tom sa \"hei\"" }
{ "quote": "Tom sa \"hei\"" }

Andre escape-sekvenser inkluderer \\ for backslash, \n for nye linjer, og \t for tabulatorer.

Feil datatyper

Strenger bør ikke brukes for tall, boolske verdier eller null.

{ "enabled": "sann", "count": "10" }
{ "aktivert": true, "antall": 10 }

JSON skiller mellom boolske verdier, tall og strenger – sørg for at riktig type brukes.

Ikke-primitive nøkler

JSON-objektnøkler må alltid være strenger; du kan ikke bruke tall, boolske verdier eller andre typer som nøkler.

{ 123: "abc" }
{ "123": "abc" }

Dupliserte nøkler

Selv om det er tillatt i JSON-spesifikasjonen, er dupliserte nøkler en vanlig årsak til feil.

{ "name": "Alice", "name": "Bob" }

De fleste tolker vil bare beholde den siste verdien ("Bob"), og stille forkaste de tidligere.

Bruk av kommentarer

Standard JSON tillater ikke kommentarer, selv om noen redigeringsprogrammer støtter dem.

{
  // Brukerinformasjon
  "name": "Alice"
}
{
  "name": "Alice"
}

Skjemavalidering: Sikring av struktur og datatyper

JSON Schema er en kraftig standard for å definere og validere forventet struktur i JSON-dokumenter. Den gjør det mulig å spesifisere:

  • Påkrevde felt (`required`)
  • Datatyper (`type`: streng, tall, boolsk, objekt, matrise, null)
  • Strengformater (`format`: e-post, uuid, dato-tid, osv.)
  • Mønstersøk for strenger (`pattern`)
  • Nummerområder (`minimum`, `maksimum`)
  • Validering av array-lengde og elementer (`minItems`, `maxItems`, `items`)
  • Nestet validering for objekter og matriser
  • Enum-begrensninger (`enum`)

Eksempel: Brukerskjema (Utkast-07)

{
  "type": "objekt",
  "properties": {
    "id":    { "type": "streng", "format": "uuid" },
    "name":  { "type": "streng", "minLength": 1 },
    "email": { "type": "streng", "format": "epost" },
    "is_active": { "type": "boolsk" }
  },
  "required": ["id", "name", "email"],
  "additionalProperties": false
}

Dette sikrer:

  • id må være en gyldig UUID-streng.
  • navn må være en ikke-tom tekststreng.
  • e-post må samsvare med standard e-postformat.
  • is_active (valgfritt) må være en boolsk verdi.
  • Ingen andre egenskaper enn de som er definert ovenfor er tillatt.

Eksempel fra virkeligheten: Validering av Stripe API-responser

Anta at du mottar JSON-svar fra Stripe API (f.eks. PaymentIntent). Skjema-validering sikrer at du aldri behandler ufullstendige eller feiltypede data.

{
  "type": "objekt",
  "properties": {
    "id":      { "type": "streng", "pattern": "^pi_" },
    "object":  { "type": "streng", "const": "betaling_intent" },
    "amount":  { "type": "heltall", "minimum": 1 },
    "currency":{ "type": "streng", "minLength": 3, "maxLength": 3 },
    "status":  { "type": "streng", "enum": [
      "krever_betalingsmetode",
      "krever_bekreftelse",
      "behandler",
      "vellykket",
      "avbrutt"
    ]}
  },
  "required": ["id", "object", "amount", "currency", "status"],
  "additionalProperties": false
}
  • id må starte med "pi_"
  • objekt må alltid være "payment_intent"
  • beløpet må være et heltall større enn eller lik 1
  • valuta må være en tresifret bokstavkode (f.eks. "usd", "eur")
  • status må være en av de spesifiserte verdiene

Fordeler

  • Tidlig feildeteksjon: Oppdag kritiske API-endringer eller ufullstendige data før de påvirker forretningslogikken din.
  • Automatisert testing: Bruk skjemaer i CI/CD-pipelines for å validere ekte og oppdiktede svar.
  • Tverrteam-konsistens: Standardiser datakontrakter mellom frontend, backend og tredjeparts-APIer.

Riktig JSON-validering—som dekker både syntaks og skjema—forebygger subtile feil, sikrer beste praksis, og beskytter applikasjonene dine mot feilformatert eller ondsinnet input. Enten det brukes i konfigurasjonsfiler, API-payloads eller meldinger mellom tjenester, er solid validering grunnleggende for moderne programvaresystemer.

Personvern og sikkerhet

All validering og skjema-sjekker utføres lokalt i nettleseren din. Ingen data lastes opp eller loggføres. Din JSON forblir helt privat.

Kodeeksempler for JSON-validering

Se hvordan du validerer JSON i ulike programmeringsspråk ved å bruke innebygde biblioteker eller populære rammeverk. Disse eksemplene viser både syntaksvalidering og skjema-validering.

JavaScript (Node.js)
Install: Standard library
const jsonString = '{"name":"Alice","age":30}';
try {
  const obj = JSON.parse(jsonString);
  console.log("Valid JSON:", obj);
} catch (e) {
  console.error("Invalid JSON!", e.message);
}
JavaScript (Node.js) with ajv (Schema validation)
Install: npm install ajv
const Ajv = require("ajv");
const ajv = new Ajv();
const schema = { type: "object", properties: { age: { type: "integer" } }, required: ["age"] };
const data = { age: 30 };
const validate = ajv.compile(schema);
console.log(validate(data) ? "Valid!" : ajv.errorsText(validate.errors));
Python
Install: Standard library (json)
import json
try:
    obj = json.loads('{"name":"Alice","age":30}')
    print("Valid JSON:", obj)
except json.JSONDecodeError as e:
    print("Invalid JSON:", e)
Python with jsonschema
Install: pip install jsonschema
import json, jsonschema
schema = {
    "type": "object",
    "properties": { "age": { "type": "integer" } },
    "required": ["age"]
}
data = {"age": 30}
try:
    jsonschema.validate(data, schema)
    print("Valid!")
except jsonschema.ValidationError as e:
    print("Schema validation error:", e)
Go
Install: Standard library (encoding/json)
package main
import (
  "encoding/json"
  "fmt"
)
func main() {
  data := []byte(`{"name":"Alice","age":30}`)
  var obj map[string]interface{}
  if err := json.Unmarshal(data, &obj); err != nil {
    fmt.Println("Invalid JSON:", err)
  } else {
    fmt.Println("Valid JSON:", obj)
  }
}
Java
Install: com.fasterxml.jackson.core:jackson-databind
import com.fasterxml.jackson.databind.ObjectMapper;
public class Main {
  public static void main(String[] args) {
    String json = "{"name":"Alice","age":30}";
    try {
      Object obj = new ObjectMapper().readTree(json);
      System.out.println("Valid JSON: " + obj);
    } catch (Exception e) {
      System.out.println("Invalid JSON: " + e.getMessage());
    }
  }
}
C#
Install: Standard library (System.Text.Json)
using System;
using System.Text.Json;
class Program {
  static void Main() {
    string json = "{"name":"Alice","age":30}";
    try {
      var doc = JsonDocument.Parse(json);
      Console.WriteLine("Valid JSON!");
    } catch (JsonException e) {
      Console.WriteLine("Invalid JSON: " + e.Message);
    }
  }
}
PHP
Install: Standard library (json_decode)
<?php
$json = '{"name":"Alice","age":30}';
$obj = json_decode($json);
if (json_last_error() === JSON_ERROR_NONE) {
  echo "Valid JSON";
} else {
  echo "Invalid JSON: " . json_last_error_msg();
}
Ruby
Install: Standard library (json)
require 'json'
begin
  obj = JSON.parse('{"name":"Alice","age":30}')
  puts "Valid JSON!"
rescue JSON::ParserError => e
  puts "Invalid JSON: #{e.message}"
end
Bash (Linux/macOS) with jq
Install: brew install jq (or apt-get install jq)
echo '{"name":"Alice","age":30}' | jq empty && echo "Valid" || echo "Invalid"
Rust
Install: cargo add serde_json
fn main() {
  let data = r#"{"name":"Alice","age":30}"#;
  match serde_json::from_str::<serde_json::Value>(data) {
    Ok(_) => println!("Valid JSON!"),
    Err(e) => println!("Invalid JSON: {}", e),
  }
}
Kotlin
Install: Standard library (org.json)
import org.json.JSONObject
fun main() {
  try {
    val obj = JSONObject("{\"name\":\"Alice\",\"age\":30}")
    println("Valid JSON: $obj")
  } catch (e: Exception) {
    println("Invalid JSON: ${e.message}")
  }
}
Swift
Install: Standard library (JSONSerialization)
import Foundation
let json = "{\"name\":\"Alice\",\"age\":30}"
if let data = json.data(using: .utf8) {
  do {
    let _ = try JSONSerialization.jsonObject(with: data)
    print("Valid JSON!")
  } catch {
    print("Invalid JSON: \(error)")
  }
}
TypeScript
Install: Standard library
const jsonString = '{"name":"Alice","age":30}';
try {
  const obj = JSON.parse(jsonString);
  console.log("Valid JSON:", obj);
} catch (e) {
  console.error("Invalid JSON!", e.message);
}
SQL (PostgreSQL)
Install: Standard (with jsonb functions)
SELECT '{"name":"Alice","age":30}'::jsonb; -- Will error if not valid JSON
MySQL
Install: Standard (5.7+)
SELECT JSON_VALID('{"name":"Alice","age":30}');
PowerShell
Install: Standard
$json = '{"name":"Alice","age":30}'
try {
  $obj = $json | ConvertFrom-Json
  Write-Output "Valid JSON!"
} catch {
  Write-Output "Invalid JSON: $($_.Exception.Message)"
}
Perl
Install: cpan JSON
use JSON;
my $str = '{"name":"Alice","age":30}';
eval { decode_json($str) };
print $@ ? "Invalid JSON: $@" : "Valid JSON!";
Dart
Install: Standard library (dart:convert)
import 'dart:convert';
void main() {
  const jsonString = '{"name":"Alice","age":30}';
  try {
    final obj = jsonDecode(jsonString);
    print('Valid JSON: $obj');
  } catch (e) {
    print('Invalid JSON: $e');
  }
}
Elixir
Install: mix deps.get jason
json = ~s({"name":"Alice","age":30})
case Jason.decode(json) do
  {:ok, _} -> IO.puts("Valid JSON!")
  {:error, err} -> IO.puts("Invalid JSON: #{err}")
end
Scala
Install: libraryDependencies += "com.typesafe.play" %% "play-json" % "2.9.4"
import play.api.libs.json._
object Main extends App {
  val str = """{"name":"Alice","age":30}"""
  try {
    val json = Json.parse(str)
    println("Valid JSON!")
  } catch {
    case e: Exception => println("Invalid JSON: " + e.getMessage)
  }
}

Om dette verktøyet

Denne verktøyet er utviklet av teamet hos Itself Tools, skapere av et bredt utvalg raske, personvernfokuserte nettverktøy brukt av millioner verden over. Med mange års erfaring innen nettleserbaserte verktøy som prioriterer enkelhet, hastighet og pålitelighet, har vi utvidet til utviklerrettede applikasjoner som denne—designet for å gjøre tekniske oppgaver enklere for programmerere, analytikere og digitale fagfolk.