آن لائن JSON سے JSON اسکیمہ جنریٹر

حقیقی دنیا کے JSON سے مضبوط، معیاری JSON اسکیمہ فوری، محفوظ، اور مفت بنائیں۔

یہ ٹول ایک JSON نمونہ لیتا ہے اور JSON اسکیمہ ڈرافٹ-07 دستاویز پیدا کرتا ہے جو اس کی ساخت، ڈیٹا کی اقسام، اور حدود کی درست عکاسی کرتا ہے۔ تمام پراسیسنگ آپ کے براؤزر میں مکمل رازداری کے ساتھ ہوتی ہے۔ کوئی ڈیٹا کہیں بھی اپ لوڈ یا محفوظ نہیں کیا جاتا۔ API دستاویزات، تصدیق، اور کوڈ جنریشن کے لیے مثالی۔

ذیل میں JSON کو JSON اسکیمہ میں تبدیل کریں

اسکیمہ جنریشن کیسے کام کرتا ہے

نمونہ JSON سے JSON اسکیمہ تیار کرنا صرف فیلڈز کو اقسام سے ملانے سے زیادہ ہے۔ یہ ٹول درستگی اور مکمل ہونے کے لیے کئی کلیدی مراحل استعمال کرتا ہے:

  1. تجزیہ: ٹول آپ کے JSON کو ECMA-404 کے مطابق پارس کرتا ہے، خراب ان پٹ یا مبہم ساختوں کے لیے تفصیلی غلطیاں رپورٹ کرتا ہے۔
  2. ساختی تجزیہ: یہ آپ کے ڈیٹا کی درخت نما نمائندگی بناتا ہے، ہر پراپرٹی اور عنصر کو JSON اسکیمہ کی بنیادی اقسام (آبجیکٹ، آرے، سٹرنگ، نمبر، انٹیجر، بولین، null) کے مطابق درجہ بند کرتا ہے۔
  3. ریکرسیو ٹریورسل: گہرے اور اندرونی ڈھانچے—جیسے آبجیکٹ کے آرے یا اندرونی آرے—کو بار بار چیک کر کے اندرونی اسکیمہ تعریفیں بنائی جاتی ہیں۔
  4. قسم کا اندازہ اور ادغام: ہر پراپرٹی یا آرے کے عنصر کے لیے اقسام کا اندازہ لگایا جاتا ہے۔ جہاں پراپرٹیز یا اشیاء کے ملے جلے اقسام ہوں، ’type‘ کو JSON اسکیمہ کی وضاحت کے مطابق ایک صف (یونین ٹائپ) کے طور پر ظاہر کیا جاتا ہے۔
  5. ضروری بمقابلہ اختیاری شناخت: ہر سطح پر تمام آبجیکٹس کا تجزیہ کر کے ٹول ہمیشہ موجود (ضروری) اور کبھی کبھی نہیں ملنے والے (اختیاری) کلیدوں میں فرق کرتا ہے۔
  6. قدر کی حدود: جہاں ممکن ہو، ٹول انمز (مجاز قدروں کا مجموعہ)، نمبروں کے لیے کم از کم/زیادہ سے زیادہ، سٹرنگز کے لیے minLength/maxLength، اور فارمیٹ اشارے (جیسے کہ 'email'، 'uri'، یا 'date-time') دریافت کرتا ہے۔
  7. حالتِ کنارے کا انتظام: خالی آرے، nulls، اور کمزور ڈھانچوں کو خاص توجہ دی جاتی ہے—تاکہ ایسے درست اسکیمے ملیں جو حقیقی دنیا کی تبدیلیوں سے میل کھاتے ہوں۔
  8. اسکیمہ ترکیب: آخری اسکیمہ ایک معیاری ڈرافٹ-07 دستاویز کے طور پر جاری کی جاتی ہے—جو Ajv، OpenAPI، یا کوڈ جنریشن لائبریریز جیسے ٹولز کے ساتھ استعمال کے لیے تیار ہے۔

JSON اسکیمہ کیوں بنائیں؟ عملی استعمالات

  • خودکار تصدیق: تیار کردہ اسکیموں کو اپنے APIs, مائیکروسروسز، یا CLI میں ڈیٹا معاہدوں کے نفاذ اور آنے والے مواد کی توثیق کے لیے استعمال کریں۔
  • API دستاویزات: دقیق ڈیٹا تعاریف کے ساتھ دستاویزات اور انٹرایکٹو ایکسپلوررز (Swagger, Postman) خودکار طور پر بنائیں۔
  • کوڈ جنریشن: اپنے اسکیمہ کو واحد حوالہ کے طور پر استعمال کرتے ہوئے TypeScript, Python, Java، اور دیگر زبانوں میں ٹائپ سیف ماڈلز یا ویلڈیٹرز بنائیں۔
  • ٹیسٹ ڈیٹا جنریشن: JSON اسکیمہ فیکر یا Mockaroo جیسے ٹولز اسکیموں سے حقیقت پسندانہ جعلی ڈیٹا بنا کر کوالٹی ایشورنس اور لوڈ ٹیسٹنگ کے لیے استعمال کرتے ہیں۔
  • ریفیکٹرنگ اور مائگریشن: پرانے یا بدلتے ہوئے ڈیٹا ڈھانچوں کی توثیق کریں، اس بات کو یقینی بنائیں کہ آپ کا بیک اینڈ ترقی کے ساتھ ہم آہنگ رہے۔

تکنیکی خصوصیات

  • زیادہ سے زیادہ مطابقت کے لیے ڈرافٹ-07 کی تعمیل، جو بڑے ویلڈیٹرز اور API ڈیزائن پلیٹ فارمز کی حمایت کرتا ہے۔
  • کسی بھی nesting کی گہرائی کا ریکرسیو تجزیہ—آرے کے اندر آرے، آبجیکٹس کے اندر آرے، اور مزید۔
  • مختلف نمونوں میں مختلف قسموں والے فیلڈز یا اشیاء کے لیے درست یونین قسم ('type' صف) کا اندازہ۔
  • خودکار شناخت انمز، لمبائی، نمونہ، فارمیٹ، کم از کم/زیادہ سے زیادہ، اور دیگر عام حدود کی۔
  • Nulls، خالی آرے/آبجیکٹس، اور جزوی ریکارڈز کے لیے واضح سپورٹ۔
  • اسکیمہ جنریشن مکمل طور پر براؤزر میں چلتی ہے۔ آپ کا ان پٹ 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 کو قبول کرتا ہے، آسان آبجیکٹس سے لیکر گہرے nested ڈھانچوں تک۔
  2. 'Generate JSON Schema' پر کلک کریں تاکہ تیار شدہ JSON اسکیمہ بنائیں اور دیکھیں۔
  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.