JSON Érvényesítő

Fejlett online JSON szintaxisellenőrző és sémaellenőrző – teljes mértékben böngésző-alapú és adatvédelmi szempontból kiemelten biztonságos.

Ellenőrizze JSON fájlját azonnal

JSON érvényesítése séma alapján
Támogatott séma verzió: Draft-07.

Ez az ingyenes online JSON érvényesítő azonnal ellenőrzi JSON adataidat szintaktikai hibák és szerkezeti problémák szempontjából. Akár nyers API válaszokat, konfigurációs fájlokat vagy strukturált adatcsomagokat validálsz, eszközünk valós időben kiemeli a problémákat, sőt automatikus javításokat is kínál. Szigorúbb ellenőrzéshez adj hozzá JSON sémát, és érvényesíts szabályokat, mint például kötelező mezők, meghatározott típusok és formátumok (email, URI stb.). Az eszköz teljes mértékben megfelel a JSON Schema Draft-07 szabványnak. Minden feldolgozás a böngésződben történik — adataid soha nem hagyják el a gépedet.

Mi az a JSON érvényesítés?

A JSON (JavaScript Object Notation) egy széles körben használt, könnyű adatcsere-formátum, amelyet úgy terveztek, hogy egyszerre legyen ember által olvasható és gépek számára könnyen feldolgozható és létrehozható. Fő célja a strukturált adatok – objektumok, tömbök, karakterláncok, számok, logikai értékek és nullák – nyelvfüggetlen ábrázolása.

A JSON érvényesítés folyamata annak programozott ellenőrzése, hogy egy JSON dokumentum szintaktikailag és szerkezetileg is helyes-e. Ez magában foglalja két fő szempont ellenőrzését:

  • Szinaktikai érvényesítés: Biztosítva, hogy a nyers szöveg megfeleljen az ECMA-404 JSON specifikáció szerinti formális nyelvtannak. A legtöbb modern programozási nyelv elemzői (például a JSON.parse() JavaScriptben, json.loads() Pythonban, JSONDecoder Javában) érvényes szintaxist várnak el, és hibát jeleznek, ha a bemenet hibás formátumú.
  • Szerkezeti (Séma) Érvényesítés: A szintaxison túl a séma-ellenőrzés biztosítja, hogy a JSON adatok megfeleljenek a várható struktúrának, beleértve az adattípusokat, a kötelező tulajdonságokat, az értékek korlátozásait, valamint a beágyazott objektumokat és tömböket. A séma-ellenőrzést általában JSON Sémával végzik, amely meghatározza az érvényes adatokra vonatkozó szabályokat.

Miért ellenőrizzük a JSON-t?

A JSON érvényesítés elengedhetetlen, amikor adatokat sorosítanak átvitelhez, tároláshoz vagy szolgáltatások közötti kommunikációhoz. A legfontosabb okok a következők:

  • Hiba megelőzése: Azonosítsa és jelezze a szintaktikai hibákat (pl. hiányzó vesszők, nem egyező zárójelek, tiltott karakterek) időben, még az adatok feldolgozása előtt.
  • Adatintegritás és biztonság: Elutasítja a hibás vagy rosszindulatú JSON adatcsomagokat, megakadályozva a backend összeomlását, injekciós támadásokat és az adatok sérülését.
  • Típusbiztonság: Szigorú típusellenőrzés érvényesítése—például annak biztosítása, hogy egy logikai értékként elvárt mező ne kerüljön sztringként elküldésre, illetve hogy az UUID-k, e-mailek és számok a megfelelő formátumnak feleljenek meg.
  • Kereszt-nyelvi kompatibilitás: Garantálja, hogy egy adott környezetben (például Node.js) létrehozott JSON biztonságosan felhasználható legyen más környezetben (például Python, Go, Java), elkerülve a sorosítási és deszerializációs hibákat.
  • Karbantarthatóság és Robosztusság: Az érvényesített adatstruktúrák javítják a nyomonkövethetőséget, és csökkentik a nehezen hibakereshető hibák kockázatát konfigurációs fájlokban, naplókban vagy API kérések/válaszok során.
  • Adatvédelem és biztonság: Az érvényesítés teljes egészében ügyféloldalon (böngészőben) történhet, megakadályozva, hogy nyers vagy érzékeny adatok elhagyják a felhasználó eszközét az érvényesítés céljából.

Gyakori JSON érvényesítési hibák (részletes példákkal)

Idézet nélküli kulcsok

A JSON objektumok összes kulcsa dupla idézőjelek közé tett sztring kell, hogy legyen.

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

Számos JSON-szerű formátum (például JavaScript objektum literálok) engedélyezi az idézőjelek nélküli kulcsokat, de a szabványos JSON ezt nem támogatja.

Egyszeres idézőjelek

A JSON karakterláncoknak kizárólag dupla idézőjeleket kell használniuk; az egyes idézőjelek nem megengedettek.

{ 'név': 'Bob' }
{ "name": "Bob" }

Egyszeres idézőjelek használata elemzőhibákat okoz minden szabványos JSON könyvtárban.

Vessző a sor végén

Ne legyen vessző az objektum vagy tömb utolsó elemét követően.

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

A lezáró vesszők működhetnek JavaScript-ben, de szigorú JSON elemzőkben nem.

Karakterek helytelen elválasztása

A idézőjeleket és speciális karaktereket a sztringeken belül visszaperrel kell escape-elni.

{ "quote": "Tom azt mondta: \"szia\"" }
{ "quote": "Tom azt mondta: \"szia\"" }

Egyéb speciális karakterek közé tartozik a \\ a visszaperjelhez, a \n az új sorokhoz, és a \t a tabulátorokhoz.

Helytelen adattípusok

A számok, logikai értékek vagy null értékek esetén ne használjunk karakterláncokat.

{ "enabled": "igaz", "count": "10" }
{ "engedélyezve": true, "darab": 10 }

A JSON megkülönbözteti a logikai értékeket, számokat és szöveges adatokat – ügyelj rá, hogy a megfelelő típust használd.

Nem primitív kulcsok

A JSON objektum kulcsai mindig karakterláncok kell, hogy legyenek; nem használhatók számok, logikai értékek vagy más típusok kulcsként.

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

Ismétlődő kulcsok

Bár a JSON szabvány engedélyezi, a duplikált kulcsok gyakori hibaforrások.

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

A legtöbb elemző csak az utolsó értéket ("Bob") tartja meg, a korábbiakat pedig észrevétlenül elveti.

Kommentek használata

A szabványos JSON nem engedélyezi a megjegyzéseket, bár egyes szerkesztők támogatják azokat.

{
  // Felhasználói információ
  "name": "Alice"
}
{
  "name": "Alice"
}

Sémaellenőrzés: Struktúra és adattípusok érvényesítése

A JSON Schema egy hatékony szabvány a JSON dokumentumok várt szerkezetének meghatározására és érvényesítésére. Lehetővé teszi, hogy megadja:

  • Kötelező mezők (`required`)
  • Adattípusok (`type`: szöveg, szám, logikai érték, objektum, tömb, null)
  • Karakterlánc formátumok (`format`: email, uuid, dátum-idő, stb.)
  • Mintaillesztés karakterláncokhoz (`pattern`)
  • Számértéktartományok (`minimum`, `maximum`)
  • Tömb hosszának és elemeinek érvényesítése (`minItems`, `maxItems`, `items`)
  • Beágyazott érvényesítés objektumokhoz és tömbökhöz
  • Enum korlátozások (`enum`)

Példa: Felhasználói séma (Draft-07)

{
  "type": "objektum",
  "properties": {
    "id":    { "type": "sztring", "format": "uuid" },
    "name":  { "type": "sztring", "minLength": 1 },
    "email": { "type": "sztring", "format": "email" },
    "is_active": { "type": "logikai" }
  },
  "required": ["id", "name", "email"],
  "additionalProperties": false
}

Ez által betartandó:

  • Az azonosítónak érvényes UUID formátumúnak kell lennie.
  • a név nem lehet üres szöveg.
  • Az e-mailnek meg kell felelnie a szabványos e-mail formátumnak.
  • is_active (opcionális) értéke logikai típusú kell, hogy legyen.
  • Csak a fent meghatározott tulajdonságok engedélyezettek.

Valós példa: Stripe API válaszok hitelesítése

Tegyük fel, hogy JSON válaszokat kap a Stripe API-tól (például PaymentIntent). A sémaellenőrzés biztosítja, hogy soha ne dolgozzon fel hiányos vagy helytelen típusú adatokat.

{
  "type": "objektum",
  "properties": {
    "id":      { "type": "sztring", "pattern": "^pi_" },
    "object":  { "type": "sztring", "const": "payment_intent" },
    "amount":  { "type": "egész", "minimum": 1 },
    "currency":{ "type": "sztring", "minLength": 3, "maxLength": 3 },
    "status":  { "type": "sztring", "enum": [
      "fizetési_mód_szükséges",
      "megerősítés_szükséges",
      "feldolgozás_alatt",
      "sikeres",
      "mégse"
    ]}
  },
  "required": ["id", "object", "amount", "currency", "status"],
  "additionalProperties": false
}
  • azonosítónak "pi_"-vel kell kezdődnie
  • az objektumnak mindig "payment_intent" típusúnak kell lennie
  • az összegnek 1-nél nagyobb vagy azzal egyenlő egész számnak kell lennie
  • a pénznemnek hárombetűs karakterláncnak kell lennie (pl. "usd", "eur")
  • az állapotnak a megadott értékek egyikének kell lennie

Előnyök

  • Korai hibafelismerés: Észlelje az API-töréseket vagy hiányos adatokat még az előtt, hogy elérnék az üzleti logikát.
  • Automatizált tesztelés: Használjon sémákat CI/CD folyamatokban valós és tesztválaszok érvényesítésére.
  • Csapatok közötti következetesség: Standardizálja az adatmegállapodásokat a frontend, a backend és a harmadik féltől származó API-k között.

Megfelelő JSON érvényesítés — amely mind a szintaxist, mind a sémát lefedi — megelőzi a rejtett hibákat, érvényesíti a bevált gyakorlatokat, és védi alkalmazásait a helytelen vagy rosszindulatú bemenetek ellen. Legyen szó konfigurációs fájlokról, API üzenetekről vagy szolgáltatások közötti kommunikációról, a megbízható érvényesítés alapvető eleme a modern szoftverrendszereknek.

Adatvédelem és Biztonság

Minden érvényesítés és sémaellenőrzés helyben, a böngészőben történik. Nincs adatfeltöltés vagy naplózás. A JSON fájlod teljes mértékben privát marad.

Kódpéldák JSON érvényesítéséhez

Nézze meg, hogyan lehet JSON-t érvényesíteni különböző programozási nyelveken beépített könyvtárak vagy népszerű keretrendszerek segítségével. Ezek a példák bemutatják mind a szintaxis ellenőrzést, mind a séma validációt.

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)
  }
}

Erről az eszközről

Ezt az eszközt az Itself Tools csapata fejlesztette, akik számos gyors, adatvédelmet előtérbe helyező online segédprogramot készítettek, melyeket világszerte milliók használnak. Évek tapasztalatával a böngésző-alapú, egyszerűséget, sebességet és megbízhatóságot előnyben részesítő eszközök fejlesztésében, elindultunk fejlesztőkre fókuszáló alkalmazások irányába, mint ez is — amelyet programozók, elemzők és digitális szakemberek részére terveztünk, hogy megkönnyítsük a technikai feladatokat.