Online Μετατροπέας JSON σε JSON Schema

Δημιουργήστε σταθερά, πρότυπα-συμβατά JSON Schema από πραγματικό JSON—άμεσα, με ασφάλεια και δωρεάν.

Αυτό το εργαλείο λαμβάνει ένα δείγμα JSON και παράγει ένα έγγραφο JSON Schema Draft-07 που αντικατοπτρίζει με ακρίβεια τη δομή, τους τύπους δεδομένων και τους περιορισμούς του. Όλη η επεξεργασία γίνεται τοπικά στον περιηγητή σας για πλήρη ιδιωτικότητα. Δεν γίνεται μεταφόρτωση ή αποθήκευση δεδομένων οπουδήποτε. Ιδανικό για τεκμηρίωση API, επικύρωση και δημιουργία κώδικα.

Μετατρέψτε JSON σε JSON Schema παρακάτω

Πώς Λειτουργεί η Δημιουργία Σχήματος

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

  1. Ανάλυση: Το εργαλείο αναλύει το JSON σας σύμφωνα με το πρότυπο ECMA-404, αναφέροντας λεπτομερή λάθη για κατεστραμμένη ή ασαφή είσοδο.
  2. Δομική Ανάλυση: Δημιουργεί δενδρική αναπαράσταση των δεδομένων σας, ταξινομώντας κάθε ιδιότητα και στοιχείο σύμφωνα με τους βασικούς τύπους JSON Schema (αντικείμενο, πίνακας, συμβολοσειρά, αριθμός, ακέραιος, λογική τιμή, null).
  3. Αναδρομική Διάσχιση: Διερευνά αναδρομικά βαθιές και εμφωλευμένες δομές—πινακες αντικειμένων ή εμφωλευμένους πίνακες—για να δημιουργήσει εμφωλευμένους ορισμούς σχήματος.
  4. Εξαγωγή και Συγχώνευση Τύπων: Για κάθε ιδιότητα ή στοιχείο πίνακα, εξάγει τύπους. Όταν υπάρχουν μικτές κατηγορίες, το πεδίο 'type' εκφράζεται ως πίνακας (ένωση τύπων) σύμφωνα με το JSON Schema.
  5. Ανίχνευση Υποχρεωτικών και Προαιρετικών: Αναλύοντας όλα τα αντικείμενα σε κάθε επίπεδο, διακρίνει κλειδιά που είναι πάντα παρόντα (υποχρεωτικά) από αυτά που είναι προαιρετικά.
  6. Περιορισμοί Τιμών: Όπου είναι δυνατόν, εξάγει λίστες επιτρεπτών τιμών (enum), ελάχιστα/μέγιστα για αριθμούς, ελάχιστο/μέγιστο μήκος για συμβολοσειρές και υποδείξεις μορφής (π.χ., 'email', 'uri', 'date-time').
  7. Διαχείριση Ακραίων Περιπτώσεων: Δίνει ειδική προσοχή σε κενά πίνακες, null και αραιές δομές—για έγκυρα σχήματα που ανταποκρίνονται σε πραγματική ποικιλία δεδομένων.
  8. Σύνθεση Σχήματος: Το τελικό σχήμα παράγεται ως πρότυπο έγγραφο Draft-07—έτοιμο για χρήση με εργαλεία όπως Ajv, OpenAPI ή βιβλιοθήκες δημιουργίας κώδικα.

Γιατί να Δημιουργήσετε JSON Schema; Πρακτικές Χρήσεις

  • Αυτοματοποιημένη Επικύρωση: Χρησιμοποιήστε τα δημιουργημένα σχήματα για να επιβάλετε συμφωνίες δεδομένων και να επικυρώνετε εισερχόμενα payloads σε API, μικροϋπηρεσίες ή CLI.
  • Τεκμηρίωση API: Δημιουργία αυτόματων εγγράφων και διαδραστικών εξερευνητών (Swagger, Postman) με ακριβείς ορισμούς δεδομένων.
  • Δημιουργία Κώδικα: Δημιουργήστε τύπους με ασφάλεια ή επικυρωτές σε TypeScript, Python, Java και άλλες γλώσσες χρησιμοποιώντας το σχήμα ως μοναδική πηγή αλήθειας.
  • Δημιουργία Δοκιμαστικών Δεδομένων: Εργαλεία όπως JSON Schema Faker ή Mockaroo χρησιμοποιούν σχήματα για σύνθεση ρεαλιστικών δοκιμαστικών δεδομένων για έλεγχο ποιότητας και φόρτου.
  • Αναμόρφωση & Μεταφορά: Επικυρώστε παλιές ή μεταβαλλόμενες δομές δεδομένων, διασφαλίζοντας συμβατότητα καθώς εξελίσσεται το backend σας.

Τεχνικά Χαρακτηριστικά

  • Συμβατότητα με Draft-07 για μέγιστη διαλειτουργικότητα με βασικούς επικυρωτές και πλατφόρμες σχεδίασης API.
  • Αναδρομική ανάλυση οποιασδήποτε βάθους εμφωλέυσεων—πίνακες μέσα σε πίνακες, αντικείμενα μέσα σε πίνακες κ.ά.
  • Ακριβής ανάλυση τύπων ένωσης (πίνακας 'type') για πεδία ή στοιχεία με μεταβλητούς τύπους σε δείγματα.
  • Αυτόματος εντοπισμός enum, μήκους, προτύπων, μορφής, ελάχιστων/μέγιστων και άλλων κοινοτών περιορισμών.
  • Απόλυτη υποστήριξη για null, κενά αντικείμενα/πίνακες και μερικές εγγραφές.
  • Η δημιουργία σχήματος γίνεται ολοκληρωτικά στον περιηγητή. Τα JSON δεδομένα σας δεν αποστέλλονται ποτέ.

Τεχνικό Παράδειγμα: Από Δείγμα JSON σε Σχήμα Draft-07

Εισαγωγή Δείγματος JSON
{
  "transaction": {
    "id": "txn_abc123",
    "amount": 99.95,
    "currency": "USD",
    "status": "completed",
    "meta": {
      "ip": "203.0.113.1",
      "tags": ["recurring", null]
    }
  },
  "refunded": false,
  "notes": null
}
Παραγόμενο JSON Schema
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "transaction": {
      "type": "object",
      "properties": {
        "id": { "type": "string" },
        "amount": { "type": "number" },
        "currency": { "type": "string", "minLength": 3, "maxLength": 3 },
        "status": { "type": "string", "enum": ["completed"] },
        "meta": {
          "type": "object",
          "properties": {
            "ip": { "type": "string", "format": "ipv4" },
            "tags": {
              "type": "array",
              "items": { "type": ["string", "null"] }
            }
          },
          "required": ["ip", "tags"]
        }
      },
      "required": ["id", "amount", "currency", "status", "meta"]
    },
    "refunded": { "type": "boolean" },
    "notes": { "type": ["null"] }
  },
  "required": ["transaction", "refunded", "notes"]
}

Πώς να Χρησιμοποιήσετε Αυτό το Εργαλείο JSON σε JSON Schema

  1. Επικολλήστε ή πληκτρολογήστε το δείγμα JSON σας στον ακόλουθο επεξεργαστή. Το εργαλείο δέχεται κάθε έγκυρο JSON, από απλά αντικείμενα έως βαθιά εμφωλευμένες δομές.
  2. Κάντε κλικ στο 'Δημιουργία JSON Σχήματος' για να δημιουργήσετε και να δείτε το παραγόμενο JSON Schema.
  3. Αντιγράψτε, επεξεργαστείτε ή κατεβάστε το σχήμα. Ενσωματώστε το άμεσα στους ορισμούς API, στη λογική επικύρωσης ή στην τεκμηρίωση σας.

Παραδείγματα Κώδικα για Γένεση Σχήματος από JSON

Δείτε πώς να δημιουργήσετε Σχήμα JSON από JSON σε διάφορες γλώσσες προγραμματισμού.

JavaScript (Node.js)
Install: npm install jsonschema-generator
const generateSchema = require('jsonschema-generator');
const data = {
  name: "Alice",
  age: 30,
  isActive: true,
  tags: ["user", "admin"]
};
const schema = generateSchema(data);
console.log(JSON.stringify(schema, null, 2));
JavaScript (Node.js) with generate-schema
Install: npm install generate-schema
const GenerateSchema = require('generate-schema');
const data = { name: "Alice", age: 30, tags: ["admin", "user"] };
const schema = GenerateSchema.json('User', data);
console.log(JSON.stringify(schema, null, 2));
Python with genson
Install: pip install genson
from genson import SchemaBuilder
sample = {"name": "Alice", "age": 30, "tags": ["user", "admin"]}
builder = SchemaBuilder()
builder.add_object(sample)
print(builder.to_json(indent=2))
Python with jsonschema-generate
Install: pip install jsonschema-generate
from jsonschema_generate import generate_schema
sample = {"name": "Alice", "age": 30, "tags": ["user", "admin"]}
schema = generate_schema(sample)
print(schema)
Go
Install: go get github.com/invopop/jsonschema
package main
import (
  "encoding/json"
  "fmt"
  "github.com/invopop/jsonschema"
)
type User struct {
  Name string   `json:"name"
  Age  int      `json:"age"
  Tags []string `json:"tags"
}
func main() {
  schema := jsonschema.Reflect(&User{})
  out, _ := json.MarshalIndent(schema, "", "  ")
  fmt.Println(string(out))
}
Java with jsonschema2pojo (CLI/Gradle/Maven)
Install: jsonschema2pojo CLI or plugin (see https://www.jsonschema2pojo.org/)
# Generate Java POJOs *from* a JSON Schema, not the reverse.
# For schema generation from Java, see tools like jackson-module-jsonSchema.
# See: https://github.com/FasterXML/jackson-module-jsonSchema
C# with NJsonSchema
Install: dotnet add package NJsonSchema
using NJsonSchema;
using Newtonsoft.Json.Linq;
var sample = JObject.Parse("{\"name\":\"Alice\",\"age\":30, \"tags\":[\"user\"]}");
var schema = await JsonSchema.FromSampleJsonAsync(sample.ToString());
Console.WriteLine(schema.ToJson());
PHP with swaggest/json-schema
Install: composer require swaggest/json-schema
require 'vendor/autoload.php';
use Swaggest\JsonSchema\Structure\ClassStructure;
$sample = ["name" => "Alice", "age" => 30, "tags" => ["user"]];
$schema = ClassStructure::exportSchema($sample);
echo json_encode($schema, JSON_PRETTY_PRINT);
Ruby with json_schemer
Install: gem install json_schemer
require 'json_schemer'
sample = { "name" => "Alice", "age" => 30, "tags" => ["admin", "user"] }
schema = JSONSchemer.schema(sample)
puts schema.to_json
Bash (with Python genson)
Install: pip install genson
echo '{"name":"Alice","age":30,"tags":["user","admin"]}' | genson | jq .
Rust with schemars
Install: cargo add schemars
use schemars::JsonSchema;
use serde::Serialize;
#[derive(Serialize, JsonSchema)]
struct User {
  name: String,
  age: u32,
  tags: Vec<String>,
}
fn main() {
  let schema = schemars::schema_for!(User);
  println!("{}", serde_json::to_string_pretty(&schema).unwrap());
}
Scala with com.github.andyglow:jsonschema
Install: libraryDependencies += "com.github.andyglow" %% "jsonschema" % "0.7.7"
import json.schema._
case class User(name: String, age: Int, tags: List[String])
val schema = Json.schema[User]
println(schema.asSpray.prettyPrint)
TypeScript with typescript-json-schema
Install: npm install -g typescript-json-schema
# Generate schema from a TypeScript interface:
typescript-json-schema tsconfig.json User --out schema.json
# See https://github.com/YousefED/typescript-json-schema
Dart (manual, no auto-inference)
Install: None (write schema manually)
// Dart does not have an automatic JSON Schema generator yet.
// Manually define schema as a Dart Map or use online tools.