Çevrimiçi JSON'dan JSON Şemasına Dönüştürücü
Gerçek dünya JSON'larından sağlam, standartlara uygun JSON Şeması oluşturun—anında, güvenli ve ücretsiz.
Bu araç, bir JSON örneği alır ve yapısını, veri tiplerini ve kısıtlamaları doğru yansıtan JSON Schema Draft-07 belgesi oluşturur. Tüm işlemler gizlilik için tamamen tarayıcınızda gerçekleşir. Verileriniz hiçbir yere yüklenmez veya saklanmaz. API dokümantasyonu, doğrulama ve kod üretimi için idealdir.
JSON'u JSON Şemasına Dönüştürün
Şema Oluşturmanın Arkasındaki İşleyiş
Örnek JSON’dan JSON Şeması üretmek, sadece alanları tiplere eşlemekten öte bir süreçtir. Bu araç doğruluk ve tamlık için şu önemli adımları uygular:
- Ayrıştırma: Araç, JSON verinizi ECMA-404’e uygun şekilde ayrıştırır ve hatalı veya belirsiz girdilerde detaylı hata raporu verir.
- Yapısal Analiz: Verinizin ağaç şeklinde temsili oluşturulur; her özellik ve öğe JSON Şema’nın temel tiplerine (nesne, dizi, metin, sayı, tam sayı, mantıksal, null) göre sınıflandırılır.
- Yinelenen Gezinme: Derin ve iç içe yapılar—nesne dizileri veya iç içe diziler dahil—özyinelemeli olarak gezilerek iç içe şema tanımları oluşturulur.
- Tip Çıkarımı ve Birleştirme: Her özellik veya dizi elemanı için tipler çıkarılır. Karışık tip varsa, JSON Şema standardına uygun şekilde 'type' dizi (birleşik tip) olarak ifade edilir.
- Zorunlu ve İsteğe Bağlı Alanların Tespiti: Her seviye için tüm nesneleri analiz ederek, her zaman bulunan (zorunlu) ve bazen eksik olan (isteğe bağlı) anahtarlar ayrılır.
- Değer Kısıtlamaları: Mümkün olduğunda, araç enum (izin verilen değerler kümesi), sayılar için min/max, metinler için minLength/maxLength ve format ipuçları ('email', 'uri', 'date-time' gibi) çıkarır.
- İstisnai Durumların İşlenmesi: Boş diziler, null değerler ve seyrek yapılar özel dikkatle işlenir—gerçek dünya varyasyonuna uygun geçerli şemalar sağlanır.
- Şema Sentezi: Nihai şema, Ajv, OpenAPI veya kod üretim kütüphaneleri ile uyumlu, standartlara uygun Draft-07 belgesi olarak çıktı verilir.
Neden JSON Şeması Oluşturmalısınız? Pratik Kullanımlar
- Otomatik Doğrulama: Oluşturulan şemalarla veri sözleşmelerini uygulayın ve API'larınız, mikroservisleriniz veya CLI araçlarınız için gelen verileri doğrulayın.
- API Dokümantasyonu: Doğru veri tanımlarıyla otomatik doküman ve etkileşimli keşif araçları (Swagger, Postman) oluşturun.
- Kod Üretimi: Tür güvenli modeller veya doğrulayıcılar için TypeScript, Python, Java gibi dillerde tek kaynak olarak şemanızı kullanın.
- Test Verisi Oluşumu: JSON Schema Faker veya Mockaroo gibi araçlar, QA ve yük testleri için gerçekçi sahte veriler üretmek amacıyla şemaları kullanır.
- Yeniden Düzenleme & Göç: Eski veya değişen veri yapılarını doğrulayarak, arka uç sistemleriniz evrildikçe uyumluluk sağlayın.
Teknik Özellikler
- Önde gelen doğrulayıcılar ve API tasarım platformları ile maksimum uyumluluk için Draft-07 desteği.
- Her seviyede iç içe yapılar için özyinelemeli analiz—diziler içinde diziler, nesneler içinde diziler ve daha fazlası.
- Örnekler arasında değişen alanlar veya öğeler için doğru birleşik tip ('type' dizisi) çıkarımı.
- Enum, uzunluk, desen, format, min/max ve diğer yaygın kısıtlamaların otomatik tespiti.
- Null, boş dizi/nesne ve kısmi kayıtlar için açık destek.
- Şema oluşturma tamamen tarayıcıda çalışır. Girdi JSON veriniz cihazınızdan hiç ayrılmaz.
Teknik Örnek: Örnek JSON’dan Draft-07 Şemaya
Örnek JSON Girişi
{ "transaction": { "id": "txn_abc123", "amount": 99.95, "currency": "USD", "status": "completed", "meta": { "ip": "203.0.113.1", "tags": ["recurring", null] } }, "refunded": false, "notes": null }Oluşturulan JSON Şeması Çıktısı
{ "$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"] }
Bu JSON'dan JSON Şemasına Aracı Nasıl Kullanılır
- Örnek JSON verinizi aşağıdaki editöre yapıştırın veya yazın. Araç, basit nesnelerden derin iç içe yapılara kadar geçerli tüm JSON'ları kabul eder.
- 'JSON Şeması Oluştur' butonuna tıklayarak oluşturulan JSON Şemasını görüntüleyin.
- Şemayı kopyalayın, düzenleyin ya da indirin. API tanımlarınıza, doğrulama mantığınıza veya dokümantasyonunuza doğrudan entegre edin.
JSON'den Şema Oluşturma için Kod Örnekleri
Çeşitli programlama dillerinde JSON'dan JSON Şeması nasıl oluşturulur, öğrenin.
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.