با سلام به شما همراهان گرامی، امیدوارم که حال همگی خوب باشه ، از اموزشهای ماتابه اینجا راضی بوده باشید.

JSON –Schema (ساختار داده ای فرمت JSON)

Schema JSON یک ابزار قدرتمند است که ساختار و فرمت داده ای JSON را تعریف و اعتبار سنجی می کند. JSON Schema مزایای زیر را ارائه می دهد:

۱٫ فرمت جاری داده ها را تعریف می کند.

۲٫ مستندات روشن، خوانا برای انسان و ماشین.

۳٫ اعتبارسنجی ساختاری کامل، مناسب برای تست خودکار.

۴٫ اعتبارسنجی ساختاری کامل که اعتبار اطلاعات ارائه شده توسط کلاینت را می سنجد (validate می کند).

سکتابخانه های اعتبارسنجی JSON Schema

امروزه Validatorهای متعددی برای زبان های مختلف برنامه نویسی وجود دارد. در حال حاضر جامع ترین و سازگارترین JSON Schema validator موجود، کتابخانه ی JSV می باشد.

زبان برنامه نویسی

کتابخانه

C

WJElement (LGPLv3)

Java

json-schema-validator (LGPLv3)

.NET

Json.NET (MIT)

ActionScript 3

Frigga (MIT)

Haskell

aeson-schema (MIT)

Python

Jsonschema

Ruby

autoparse (ASL 2.0);ruby-jsonschema (MIT)

PHP

php-json-schema (MIT). json-schema (Berkeley)

JavaScript

Orderly (BSD);JSV;json-schema;Matic (MIT);Dojo;Persevere (modified BSD or AFL 2.0);schema.js.

مثال از JSON Schema

در زیر نمونه ی ساده ی JSON schema را می بینید که یک کاتالوگ محصولات متعارف را پوشش می دهد:
?
۱
۲
۳
۴
۵
۶
۷
۸
۹
۱۰
۱۱
۱۲
۱۳
۱۴
۱۵
۱۶
۱۷
۱۸
۱۹
۲۰
۲۱
۲۲
۲۳
۲۴
۲۵
۲۶
۲۷
۲۸
۲۹
۳۰
۳۱
۳۲
۳۳
۳۴
۳۵
۳۶
۳۷
۳۸
۳۹
۴۰
۴۱
۴۲
۴۳

{

“$schema“: “http://json-schema.org/draft-04/schema#”,

“title”: “Product”,

“description”: “A product from Acme’s catalog”,

“type”: “object”,

“properties”: {

“id”: {

“description”: “The unique identifier for a product”,

“type”: “integer”

},

“name”: {

“description”: “Name of the product”,

“type”: “string”

},

“price”: {

“type”: “number”,

“minimum”: 0,

“exclusiveMinimum”: true

}

},

“required”: [“id”, “name”, “price”]

}

در جدول زیر هر یک از کلیدواژه های بکار رفته در مثال فوق را به همراه شرح آن مشاهده می کنید:

کلیدواژه

شرح

$schema

این کلیدواژه اعلان می کند که این schema بر اساس مشخصات draft v4 نوشته شده است. در واقع از این واژه ی کلیدی برای بیان اینکه قطعه JSON جاری، بخشی از JSON Schema است استفاده می شود.

title

یک عنوان برای schema تعریف می کند.

description

با این کلیدواژه می توان شرح مختصری از داده های توصیف شده توسط schema ارائه داد.

type

اولین قید یا constraint ای که بر روی داده های JSON اعمال می شود را تعریف می کند: بایستی یک شی JSON باشد. به عبارت دیگر با این کلیدواژه (بخش کیلد از جفت کلید:مقدار) نوع داده ای مورد انتظار را مشخص می کنیم (فایل JSON ای که دریافت می شود باید از نوع مشخص شده باشد).

properties

جفت های کلید-مقدار (یا به اصطلاح property های) داخل یک شی را توسط این کلیدواژه تعریف می کنیم. مقدار واژه ی کلیدی properties یک شی است که در آن هر کلید اسم property را مشخص می کند و مقدار هر کلید نیز یک JSON Schema است که برای اعتبارسنجی آن property بکار می رود.

required

لیست property های الزامی را مشخص می کند. این کلید با لیستی از property های الزامی مقداردهی می شود.

minimum

یک قید است که بر روی مقدار اعمال شده و کم ترین مقدار عددی قابل قبول را مشخص می کند.

exclusiveMinimum

کلیدواژه ی exclusiveMaximum با مقدار بولی تنظیم می شود. اگر با true مقداردهی شده باشد، معنیش این است که بازه عددی مقدار بیشینه را شامل نمی شود (یعنی x ). اگر بر روی false تنظیم شده باشد (یا اصلا حاضر نباشد)، معنیش این است که بازه ی عددی مقدار بیشینه را نیز دربرمی گیرد (یعنی x ≤max).

maximum

این کلیدواژه یک قید است که بر روی مقدار اعمال شده و حداکثر مقدار (عددی) قابل قبول را تعیین می کند.

exclusiveMaximum

این کلیدواژه از نوع بولی است که در صورت تنظیم بودن بر روی مقدار true، تعیین می کند که بازه عددی نباید از مقدار بیشنیه مشخص شده بزرگتر باشد (x ). اگر با false مقدار دهی شده یا اصلا لحاظ نشده باشد، معنیش این است که مقدار بیشینه را نیز شامل می شود (x ≤max).

multipleOf

می توان با استفاده از کلیدواژه ی multipleOf یک عدد را تنها در صورتی پذیرفت که مضرب عدد مشخصی باشد (برای مثال ۲۰ مضرب ۱۰ است و معتبر محسوب می شوند، اما این امر در مورد عدد ۲۳ صادق نیست). می توان این کلید را با هر عدد مثبتی مقداردهی کرد.

در واقع با این کلیدواژه یک عدد تنها در صورتی معتبر می باشد که نتیجه ی تقسیم آن بر مقدار کلید multipleOf، یک عدد صحیح باشد.

maxLength

حداکثر تعداد کاراکتر مجاز نمونه رشته را مشخص می کند. اگر طول رشته از مقدار مشخص شده در این کلید بیشتر باشد، در اعتبارسنجی رد می شود.

minLength

حداقل تعداد کاراکتر مجاز در یک رشته را مشخص می کند. بایستی این کلید را با عدد مثبت مقداردهی کرد. اگر طول یا تعداد کاراکتر رشته کمتر از مقدار مشخص شده در این کلید باشد، در اعتبارسنجی رد می شود.

pattern

نمونه رشته در صورتی که با الگو یا عبارت باقاعده (regular expression) مشخص شده منطبق باشد، معتبر محسوب می شود.

در واقع با کلیدواژه ی pattern می توان از عبارات با قاعده برای اعمال محدودیت و اعتبارسنجی رشته بهره گرفت.

حال می توان با schema ی فوق کد JSON زیر را اعتبارسنجی کرد:

[

{

“id”: 2,

“name”: “An ice sculpture”,

“price”: 12.50,

},

{

“id”: 3,

“name”: “A blue mouse”,

“price”: 25.50,

}

]

مقایسه ی فرمت JSON با XML برای انتقال اطلاعات
تاریخ ارس