مولد مخطط JSON عبر الإنترنت

أنشئ مخطط JSON قوي وملتزم بالمعايير من JSON حقيقي - فورًا، بأمان، ومجانًا.

تأخذ هذه الأداة عينة JSON وتنتج مستند مخطط JSON مسودة-07 يعكس بدقة هيكلها وأنواع بياناتها وقيودها. تتم كل المعالجة في متصفحك للحفاظ على الخصوصية التامة. لا يتم رفع أو تخزين أي بيانات في أي مكان. مثالي لتوثيق APIs، التحقق، وتوليد الشيفرة.

حوّل JSON إلى مخطط JSON أدناه

كيف يعمل توليد المخطط تحت الغطاء

توليد مخطط JSON من عينة JSON يتطلب أكثر من مجرد مطابقة الحقول بالأنواع. تستخدم هذه الأداة عدة خطوات رئيسية لضمان الدقة والكمال:

  1. التحليل: تقوم الأداة بتحليل JSON الخاص بك وفقًا لمواصفة ECMA-404، مع تقديم تقارير مفصلة عن الأخطاء في حال وجود مدخلات غير صحيحة أو غير واضحة.
  2. التحليل الهيكلي: تبني شجرة تمثّل بياناتك، وتصنّف كل خاصية وعنصر وفقًا لأنواع JSON Schema الأساسية (كائن، مصفوفة، سلسلة نصية، رقم، عدد صحيح، منطقي، فارغ).
  3. التنقل التكراري: يتم عبور الهياكل العميقة والمتداخلة - بما في ذلك مصفوفات الكائنات أو المصفوفات المتداخلة - بشكل تكراري لتوليد تعريفات مخطط متداخلة.
  4. استدلال ودمج الأنواع: لكل خاصية أو عنصر مصفوفة، يتم استدلال الأنواع. حيث تكون الأنواع مختلطة، يُعبّر عن "النوع" كمصفوفة (نوع اتحاد) حسب مواصفة JSON Schema.
  5. تمييز المطلوب من الاختياري: من خلال تحليل كافة الكائنات على كل مستوى، تميز الأداة بين المفاتيح الحاضرة دائمًا (مطلوبة) وتلك التي قد تكون مفقودة أحيانًا (اختيارية).
  6. قيود القيم: حيثما أمكن، تستدل الأداة على المجموعات المحتملة للقيم (enums)، الحد الأدنى والأقصى للأعداد، الحد الأدنى والأقصى لطول السلاسل، وتلميحات التنسيق (مثل 'email'، 'uri'، أو 'date-time').
  7. معالجة الحالات الخاصة: تعطي الأداة اهتمامًا خاصًا للمصفوفات الفارغة، القيم الفارغة null، والهياكل المتقطعة - لضمان مخططات صالحة تمثل تنوع الواقع الحقيقي.
  8. تركيب المخطط: يُصدر المخطط النهائي كمستند متوافق مع مسودة-07 - جاهز للاستخدام مع أدوات مثل Ajv، OpenAPI، أو مكتبات توليد الشيفرة.

لماذا توليد مخطط JSON؟ استخدامات عملية

  • التحقق التلقائي: استخدم المخططات المولدة لفرض عقود البيانات والتحقق من الحمولات الواردة في APIs، الخدمات الصغيرة، أو أدوات سطر الأوامر.
  • توثيق API: أنشئ مستندات ومستكشفات تفاعلية (Swagger، Postman) أوتوماتيكيًا بتعريفات بيانات دقيقة.
  • توليد الشيفرة: أنشئ نماذج أو أدوات تحقق آمنة الأنواع في TypeScript، Python، Java ولغات أخرى باستخدام مخططك كمصدر وحيد للحقائق.
  • توليد بيانات اختبار: تستخدم أدوات مثل JSON Schema Faker أو Mockaroo المخططات لتوليد بيانات وهمية واقعية للاختبار وضغط الأداء.
  • إعادة الهيكلة والترحيل: تحقق من صحة هياكل البيانات القديمة أو المتغيرة، مع ضمان التوافق أثناء تطور البنية الخلفية.

الميزات التقنية

  • التوافق مع مسودة-07 لأقصى توافق مع أدوات التحقق ومنصات تصميم API الرائدة.
  • تحليل تكراري لأي عمق تعشيش - مصفوفات داخل مصفوفات، كائنات داخل مصفوفات، والمزيد.
  • استدلال دقيق لأنواع الاتحاد (مصفوفة للنوع) للحقل أو العناصر التي تختلف بين العينات.
  • كشف تلقائي للمجموعات المحتملة (enums)، الطول، النمط، التنسيق، الحد الأدنى/الأقصى، وغيرها من القيود الشائعة.
  • دعم صريح للقيم null، المصفوفات/الكائنات الفارغة، والسجلات الجزئية.
  • يعمل توليد المخطط كاملاً داخل المتصفح، لا يغادر JSON الخاص بك جهازك أبدًا.

مثال تقني: من JSON عينة إلى مخطط مسودة-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": "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

  1. ألصق أو اكتب مثال JSON الخاص بك في المحرر أدناه. تقبل الأداة أي JSON صالح، من الكائنات البسيطة إلى الهياكل المتداخلة بعمق.
  2. انقر على ’توليد مخطط JSON‘ لتوليد وعرض مخطط JSON الناتج.
  3. انسخ المخطط، عدله، أو قم بتنزيله. دمجه مباشرة في تعريفات API، منطق التحقق، أو التوثيق.

أمثلة تعليمات برمجية لتوليد المخطط من JSON

اكتشف كيفية إنشاء مخطط JSON (JSON Schema) من بيانات 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.