Επικυρωτής JSON

Προηγμένος online έλεγχος σύνταξης JSON και έλεγχος σχήματος — πλήρως βασισμένος σε πρόγραμμα περιήγησης με έμφαση στην ιδιωτικότητα.

Επικυρώστε το JSON σας αμέσως

Επικύρωση JSON με Σχήμα
Υποστηριζόμενη έκδοση σχήματος: Draft-07.

Αυτός ο δωρεάν διαδικτυακός Ελεγκτής JSON σάς επιτρέπει να ελέγχετε άμεσα τα δεδομένα JSON σας για συντακτικά λάθη και δομικά προβλήματα. Είτε επικυρώνετε απαντήσεις API, αρχεία διαμόρφωσης ή δομημένα φορτία, το εργαλείο μας επισημαίνει τα προβλήματα σε πραγματικό χρόνο και προσφέρει ακόμη και αυτόματες διορθώσεις. Για πιο αυστηρή επικύρωση, προσθέστε ένα Σχήμα JSON και επιβάλετε κανόνες όπως υποχρεωτικά πεδία, συγκεκριμένους τύπους και μορφές (email, URI κ.ά.). Το εργαλείο συμμορφώνεται πλήρως με το JSON Schema Draft-07. Όλη η επεξεργασία γίνεται στον περιηγητή σας — τα δεδομένα σας δεν φεύγουν ποτέ από τη συσκευή σας.

Τι είναι η Επαλήθευση JSON;

Το JSON (JavaScript Object Notation) είναι μια ευρέως χρησιμοποιούμενη, ελαφριά μορφή ανταλλαγής δεδομένων, σχεδιασμένη ώστε να είναι ευανάγνωστη για τον άνθρωπο και εύκολη στην επεξεργασία από μηχανές. Ο βασικός του στόχος είναι να αναπαριστά δομημένα δεδομένα — αντικείμενα, πίνακες, συμβολοσειρές, αριθμούς, boolean τιμές και null — με τρόπο ανεξάρτητο από τη γλώσσα προγραμματισμού.

Η επικύρωση JSON είναι η διαδικασία προγραμματιστικού ελέγχου για να διαπιστωθεί ότι ένα έγγραφο JSON είναι τόσο συντακτικά όσο και δομικά σωστό. Αυτό περιλαμβάνει τον έλεγχο δύο βασικών πτυχών:

  • Συντακτικός Έλεγχος: Εξασφαλίζοντας ότι το αρχικό κείμενο ακολουθεί την επίσημη γραμματική όπως ορίζεται από την προδιαγραφή ECMA-404 JSON. Οι αναλυτές σε τις περισσότερες σύγχρονες γλώσσες προγραμματισμού (π.χ., JSON.parse() στη JavaScript, json.loads() στην Python, JSONDecoder στη Java) αναμένουν έγκυρη σύνταξη και θα εμφάνιζαν σφάλματα εάν το εισερχόμενο αρχείο είναι μη έγκυρο.
  • Δομικός (Σχήμα) Έλεγχος Εγκυρότητας: Πέρα από τη σύνταξη, η επικύρωση του σχήματος ελέγχει ότι τα δεδομένα JSON ταιριάζουν με την αναμενόμενη δομή, συμπεριλαμβανομένων των τύπων δεδομένων, των απαιτούμενων ιδιοτήτων, των περιορισμών τιμών και των εμφωλευμένων αντικειμένων/πινάκων. Η επικύρωση σχήματος πραγματοποιείται συνήθως με τη χρήση του JSON Schema, το οποίο ορίζει κανόνες για τα έγκυρα δεδομένα.

Γιατί να Επικυρώσετε JSON;

Η επικύρωση JSON είναι κρίσιμη όπου κι αν σειριοποιούνται δεδομένα για μετάδοση, αποθήκευση ή επικοινωνία μεταξύ υπηρεσιών. Βασικοί λόγοι περιλαμβάνουν:

  • Πρόληψη Σφαλμάτων: Εντοπίστε και αναφέρετε σφάλματα σύνταξης (π.χ., απουσία κόμματος, μη ζευγαρωμένες αγκύλες, μη αποδεκτοί χαρακτήρες) έγκαιρα—πριν από την προσπάθεια επεξεργασίας δεδομένων.
  • Ακεραιότητα Δεδομένων & Ασφάλεια: Απορρίψτε λανθασμένα ή κακόβουλα JSON πακέτα, βοηθώντας στην πρόληψη αποτυχιών διακομιστή, επιθέσεων ένεσης και αλλοίωσης δεδομένων.
  • Ασφάλεια Τύπων: Εφαρμόστε αυστηρή τυποποίηση—εξασφαλίζοντας, για παράδειγμα, ότι ένα πεδίο που αναμένεται να είναι boolean δεν αποστέλλεται ως string, ή ότι τα UUID, τα emails ή οι αριθμοί ακολουθούν το σωστό μορφότυπο.
  • Διαλειτουργικότητα μεταξύ γλωσσών: Εξασφαλίστε ότι τα JSON που παράγονται σε ένα περιβάλλον (π.χ. Node.js) θα μπορούν να χρησιμοποιηθούν με ασφάλεια σε άλλο (π.χ. Python, Go, Java), αποφεύγοντας σφάλματα σειριοποίησης/αποσειριοποίησης.
  • Διαχειρισιμότητα και Ανθεκτικότητα: Οι επικυρωμένες δομές δεδομένων βελτιώνουν την ιχνηλασιμότητα και μειώνουν τον κίνδυνο σφαλμάτων που είναι δύσκολο να εντοπιστούν σε αρχεία διαμόρφωσης, αρχεία καταγραφής ή αιτήματα/απαντήσεις API.
  • Απόρρητο & Ασφάλεια: Η επικύρωση μπορεί να πραγματοποιηθεί εξ ολοκλήρου στην πλευρά του πελάτη (μέσα στο πρόγραμμα περιήγησης), αποτρέποντας την αποστολή ακατέργαστων ή ευαίσθητων δεδομένων από τη συσκευή του χρήστη για επικύρωση.

Συχνά Σφάλματα Επικύρωσης JSON (με Λεπτομερή Παραδείγματα)

Κλειδιά χωρίς εισαγωγικά

Όλα τα κλειδιά στα αντικείμενα JSON πρέπει να είναι συμβολοσειρές με διπλά εισαγωγικά.

{ name: "Άλις" }
{ "name": "Αλίκη" }

Πολλές μορφές παρόμοιες με το JSON (π.χ., αντικείμενα JavaScript) επιτρέπουν μη-περιγεγραμμένα κλειδιά, αλλά το πρότυπο JSON δεν το επιτρέπει.

Μονά Αποσιωπητικά

Οι συμβολοσειρές JSON πρέπει να χρησιμοποιούν μόνο διπλά εισαγωγικά· τα μονά εισαγωγικά δεν επιτρέπονται.

{ 'όνομα': 'Μπομπ' }
{ "name": "Μπομπ" }

Η χρήση μονών εισαγωγικών θα προκαλέσει σφάλματα ανάλυσης σε όλες τις συμβατές βιβλιοθήκες JSON.

Τελικά Κόμματα

Μη χρησιμοποιείτε κόμμα στο τέλος μετά το τελευταίο στοιχείο σε αντικείμενο ή πίνακα.

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

Οι τελικοί κόμματες μπορεί να λειτουργούν στη JavaScript, αλλά όχι σε αυστηρούς αναλυτές JSON.

Ακατάλληλη Διαφυγή Χαρακτήρων

Οι αποσιωπητικά και οι ειδικοί χαρακτήρες μέσα σε συμβολοσειρές πρέπει να διαφεύγουν με την χρήση ανάποδης κάθετης (backslash).

{ "quote": "Ο Τομ είπε \"γεια\"" }
{ "quote": "Ο Τομ είπε \"γεια\"" }

Άλλες ακολουθίες διαφυγής περιλαμβάνουν το \\ για οπίσθια κάθετο, το \n για νέες γραμμές και το \t για καρτέλες.

Λανθασμένοι Τύποι Δεδομένων

Οι συμβολοσειρές δεν πρέπει να χρησιμοποιούνται για αριθμούς, boolean ή null.

{ "enabled": "αληθές", "count": "10" }
{ "enabled": true, "count": 10 }

Το JSON διαχωρίζει τους boolean, αριθμούς και συμβολοσειρές—βεβαιωθείτε ότι χρησιμοποιείται ο σωστός τύπος.

Μη Πρωταρχικά Κλειδιά

Τα κλειδιά αντικειμένων JSON πρέπει πάντα να είναι συμβολοσειρές· δεν μπορείτε να χρησιμοποιήσετε αριθμούς, λογικές τιμές ή άλλους τύπους ως κλειδιά.

{ 123: "abc" }
{ "123": "αβγ" }

Διπλότυπα Κλειδιά

Αν και επιτρέπεται από το πρότυπο JSON, τα διπλότυπα κλειδιά είναι μια συνηθισμένη πηγή σφαλμάτων.

{ "name": "Αλίκη", "name": "Μπομπ" }

Οι περισσότεροι αναλυτές θα κρατήσουν μόνο την τελευταία τιμή («Μπομπ»), απορρίπτοντας διακριτικά τις προηγούμενες.

Χρήση Σχολίων

Το πρότυπο JSON δεν επιτρέπει σχόλια, παρόλο που μερικοί επεξεργαστές τα υποστηρίζουν.

{
  // Πληροφορίες χρήστη
  "name": "Άλις"
}
{
  "name": "Αλίκη"
}

Επαλήθευση Σχήματος: Επιβολή Δομής και Τύπων Δεδομένων

Το JSON Schema είναι ένα ισχυρό πρότυπο για τον ορισμό και την επικύρωση της αναμενόμενης δομής εγγράφων JSON. Σας επιτρέπει να ορίσετε:

  • Απαραίτητα πεδία (`required`)
  • Τύποι δεδομένων (`type`: συμβολοσειρά, αριθμός, boolean, αντικείμενο, πίνακας, null)
  • Μορφές συμβολοσειρών (`format`: email, uuid, ημερομηνία-ώρα, κ.ά.)
  • Αντιστοίχιση προτύπων για συμβολοσειρές (`pattern`)
  • Εύρη αριθμών (`ελάχιστο`, `μέγιστο`)
  • Έλεγχος μήκους πίνακα και στοιχείων (`minItems`, `maxItems`, `items`)
  • Φωλιασμένη επικύρωση για αντικείμενα και πίνακες
  • Περιορισμοί Enum (`enum`)

Παράδειγμα: Σχήμα Χρήστη (Πρόχειρο-07)

{
  "type": "object",
  "properties": {
    "id":    { "type": "string", "format": "uuid" },
    "name":  { "type": "string", "minLength": 1 },
    "email": { "type": "string", "format": "email" },
    "is_active": { "type": "boolean" }
  },
  "required": ["id", "name", "email"],
  "additionalProperties": false
}

Τι επιβάλλει αυτό:

  • Το αναγνωριστικό πρέπει να είναι μια έγκυρη συμβολοσειρά UUID.
  • το όνομα πρέπει να είναι μια μη κενή συμβολοσειρά.
  • Το email πρέπει να ακολουθεί το πρότυπο μορφής email.
  • is_active (προαιρετικό) πρέπει να είναι boolean (λογική τιμή).
  • Δεν επιτρέπονται άλλες ιδιότητες εκτός από αυτές που ορίζονται παραπάνω.

Παραδειγματική Εφαρμογή: Επικύρωση Απαντήσεων του Stripe API

Ας υποθέσουμε ότι λαμβάνετε απαντήσεις JSON από το API της Stripe (π.χ., PaymentIntent). Η επικύρωση του σχήματος μπορεί να διασφαλίσει ότι ποτέ δεν επεξεργάζεστε ελλιπή ή λανθασμένα τύπου δεδομένα.

{
  "type": "αντικείμενο",
  "properties": {
    "id":      { "type": "σειρά", "pattern": "^pi_" },
    "object":  { "type": "σειρά", "const": "payment_intent" },
    "amount":  { "type": "ακέραιος", "minimum": 1 },
    "currency":{ "type": "σειρά", "minLength": 3, "maxLength": 3 },
    "status":  { "type": "σειρά", "enum": [
      "απαιτείται_μέθοδος_πληρωμής",
      "απαιτείται_επιβεβαίωση",
      "σε_επεξεργασία",
      "επιτυχής",
      "ακυρώθηκε"
    ]}
  },
  "required": ["id", "object", "amount", "currency", "status"],
  "additionalProperties": false
}
  • το αναγνωριστικό πρέπει να ξεκινά με "pi_"
  • το αντικείμενο πρέπει πάντα να είναι "payment_intent"
  • το ποσό πρέπει να είναι ακέραιος αριθμός μεγαλύτερος ή ίσος με 1
  • Το νόμισμα πρέπει να είναι μια τριών γραμμάτων συμβολοσειρά (π.χ., "usd", "eur")
  • το status πρέπει να είναι μία από τις καθορισμένες τιμές

Οφέλη

  • Πρώιμη Ανίχνευση Σφαλμάτων: Εντοπίστε καταστροφικές αλλαγές στο API ή ελλιπή δεδομένα πριν φτάσουν στην επιχειρηματική σας λογική.
  • Αυτοματοποιημένος Έλεγχος: Χρησιμοποιήστε σχήματα σε διαδικασίες CI/CD για την επαλήθευση πραγματικών και προσομοιωμένων αποκρίσεων.
  • Συνοχή μεταξύ ομάδων: Τυποποιήστε τα συμβόλαια δεδομένων μεταξύ frontend, backend και API τρίτων μερών.

Η σωστή επαλήθευση JSON—που καλύπτει τόσο τη σύνταξη όσο και το σχήμα—αποτρέπει λεπτά σφάλματα, επιβάλλει βέλτιστες πρακτικές και προστατεύει τις εφαρμογές σας από λανθασμένα ή κακόβουλα δεδομένα εισόδου. Είτε χρησιμοποιείται σε αρχεία διαμόρφωσης, φορτία API ή μηνύματα μεταξύ υπηρεσιών, η στιβαρή επαλήθευση αποτελεί θεμέλιο για σύγχρονα λογισμικά συστήματα.

Απόρρητο & Ασφάλεια

Όλες οι επαληθεύσεις και οι έλεγχοι σχήματος εκτελούνται τοπικά στον περιηγητή σας. Δεν αποστέλλονται ή καταγράφονται δεδομένα. Το JSON σας παραμένει απόλυτα ιδιωτικό.

Παραδείγματα Κώδικα για Επαλήθευση JSON

Δείτε πώς να επαληθεύσετε JSON σε διάφορες γλώσσες προγραμματισμού χρησιμοποιώντας ενσωματωμένες βιβλιοθήκες ή δημοφιλή πλαίσια εργασίας. Αυτά τα παραδείγματα δείχνουν τόσο τον έλεγχο σύνταξης όσο και την επαλήθευση σχήματος JSON.

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

Σχετικά με αυτό το εργαλείο

Αυτή η εφαρμογή αναπτύχθηκε από την ομάδα στο Itself Tools, δημιουργούς μιας ευρείας γκάμας γρήγορων και ιδιωτικών διαδικτυακών εργαλείων που χρησιμοποιούνται από εκατομμύρια χρήστες παγκοσμίως. Με πολυετή εμπειρία στην κατασκευή εργαλείων προγράμματος περιήγησης που δίνουν προτεραιότητα στην απλότητα, την ταχύτητα και την αξιοπιστία, έχουμε επεκταθεί σε εφαρμογές για προγραμματιστές όπως αυτή — σχεδιασμένη να διευκολύνει τις τεχνικές εργασίες για προγραμματιστές, αναλυτές και ψηφιακούς επαγγελματίες.