Generator Online JSON ke Skema JSON

Hasilkan Skema JSON yang kuat dan sesuai standar dari JSON dunia nyata—langsung, aman, dan gratis.

Alat ini mengambil contoh JSON dan menghasilkan dokumen JSON Schema Draft-07 yang secara akurat mencerminkan struktur, tipe data, dan batasan. Semua proses berlangsung di browser Anda untuk privasi penuh. Tidak ada data yang diunggah atau disimpan di mana pun. Ideal untuk dokumentasi API, validasi, dan pembuatan kode.

Ubah JSON ke Skema JSON di bawah ini

Cara Kerja Pembuatan Skema di Balik Layar

Menghasilkan Skema JSON dari contoh JSON lebih dari sekadar memetakan kolom ke tipe. Alat ini menggunakan beberapa langkah utama agar benar dan lengkap:

  1. Parsing: Alat ini memparsing JSON Anda sesuai ECMA-404, melaporkan kesalahan rinci untuk input yang salah atau konstruksi ambigu.
  2. Analisis Struktur: Membangun representasi pohon data Anda, mengklasifikasikan tiap properti dan elemen sesuai tipe inti JSON Schema (object, array, string, number, integer, boolean, null).
  3. Penelusuran Rekursif: Struktur yang dalam dan bersarang—termasuk array berisi objek atau array bersarang—ditelusuri secara rekursif untuk menghasilkan definisi skema bersarang.
  4. Inferensi dan Penggabungan Tipe: Untuk tiap properti atau elemen array, tipe diinferensi. Jika ada tipe campuran, ‘type’ dinyatakan sebagai array (tipe gabungan) sesuai spesifikasi JSON Schema.
  5. Deteksi Wajib vs Opsi: Dengan menganalisis semua objek di tiap level, alat membedakan kunci yang selalu hadir (required) dan yang kadang hilang (optional).
  6. Batasan Nilai: Bila memungkinkan, alat menginferensi enum (set nilai yang diperbolehkan), min/maks untuk angka, minLength/maxLength untuk string, dan petunjuk format (seperti 'email', 'uri', atau 'date-time').
  7. Penanganan Kasus Tepi: Perhatian khusus diberikan pada array kosong, null, dan struktur jarang—menjamin skema valid yang sesuai variabilitas dunia nyata.
  8. Sintesis Skema: Skema akhir dikeluarkan sebagai dokumen Draft-07 yang sesuai standar—siap digunakan dengan alat seperti Ajv, OpenAPI, atau pustaka pembuatan kode.

Mengapa Menghasilkan Skema JSON? Penggunaan Praktis

  • Validasi Otomatis: Gunakan skema yang dihasilkan untuk menegakkan kontrak data dan memvalidasi payload yang masuk pada API, microservices, atau CLI Anda.
  • Dokumentasi API: Hasilkan otomatis dokumentasi dan penjelajah interaktif (Swagger, Postman) dengan definisi data yang tepat.
  • Pembuatan Kode: Buat model atau validator yang aman tipe di TypeScript, Python, Java, dan bahasa lain menggunakan skema sebagai sumber data utama.
  • Pembuatan Data Uji: Alat seperti JSON Schema Faker atau Mockaroo menggunakan skema untuk mensintesis data tiruan realistis untuk pengujian QA dan beban.
  • Refaktorisasi & Migrasi: Validasi struktur data lama atau berubah, memastikan kompatibilitas saat backend Anda berkembang.

Fitur Teknis

  • Kompatibilitas Draft-07 untuk interoperabilitas maksimum dengan validator utama dan platform desain API.
  • Analisis rekursif dengan kedalaman bersarang tak terbatas—array dalam array, objek dalam array, dan lainnya.
  • Inferensi tipe gabungan ('type' array) yang akurat untuk bidang atau item yang bervariasi antar sampel.
  • Deteksi otomatis enum, panjang, pola, format, min/maks, dan batasan umum lain.
  • Dukungan eksplisit untuk null, array/objek kosong, dan catatan parsial.
  • Pembuatan skema sepenuhnya dijalankan di dalam browser. JSON input Anda tidak pernah meninggalkan perangkat Anda.

Contoh Teknis: Dari JSON Contoh ke Skema Draft-07

Input JSON Contoh
{
  "transaction": {
    "id": "txn_abc123",
    "amount": 99.95,
    "currency": "USD",
    "status": "completed",
    "meta": {
      "ip": "203.0.113.1",
      "tags": ["recurring", null]
    }
  },
  "refunded": false,
  "notes": null
}
Output Skema JSON yang Dihasilkan
{
  "$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"]
}

Cara Menggunakan Alat JSON ke Skema JSON Ini

  1. Tempelkan atau ketik contoh JSON Anda ke editor di bawah. Alat ini menerima JSON valid apa pun, dari objek sederhana hingga struktur sangat bersarang.
  2. Klik 'Hasilkan Skema JSON' untuk membuat dan melihat Skema JSON yang dihasilkan.
  3. Salin, sunting, atau unduh skema tersebut. Integrasikan langsung ke definisi API, logika validasi, atau dokumentasi Anda.

Contoh Kode untuk Generasi Skema dari JSON

Lihat cara menghasilkan Skema JSON dari JSON dalam berbagai bahasa pemrograman.

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.