JSON - สคีมา
JSON Schema เป็นข้อกำหนดสำหรับรูปแบบที่ใช้ JSON สำหรับการกำหนดโครงสร้างของข้อมูล JSON ถูกเขียนภายใต้ร่าง IETF ซึ่งหมดอายุในปี 2554 สคีมา JSON -
- อธิบายรูปแบบข้อมูลที่มีอยู่ของคุณ
- เอกสารที่ชัดเจนมนุษย์และเครื่องอ่านได้
- การตรวจสอบโครงสร้างที่สมบูรณ์มีประโยชน์สำหรับการทดสอบอัตโนมัติ
- ตรวจสอบโครงสร้างที่สมบูรณ์ตรวจสอบความถูกต้องของข้อมูลที่ลูกค้าส่งมา
ไลบรารีการตรวจสอบสคีมา JSON
ปัจจุบันมีตัวตรวจสอบความถูกต้องหลายตัวสำหรับภาษาโปรแกรมต่างๆ ปัจจุบันเครื่องมือตรวจสอบสคีมา JSON ที่สมบูรณ์และเป็นไปตามมาตรฐานที่สุดที่มีอยู่คือ JSV
ภาษา | ห้องสมุด |
---|---|
ค | WJElement (LGPLv3) |
Java | json-schema-validator (LGPLv3) |
.สุทธิ | Json.NET (MIT) |
ActionScript 3 | ฟริกกา (MIT) |
Haskell | aeson-schema (MIT) |
Python | Jsonschema |
ทับทิม | อัตโนมัติ (ASL 2.0); ทับทิม jsonschema (MIT) |
PHP | php-json-schema (MIT) json-schema (เบิร์กลีย์) |
JavaScript | เป็นระเบียบ (BSD); JSV; json-schema; มาติค (MIT); โดโจ; Persevere (แก้ไข BSD หรือ AFL 2.0); schema.js |
ตัวอย่างสคีมา JSON
ด้านล่างนี้เป็นสคีมา JSON พื้นฐานซึ่งครอบคลุมคำอธิบายแคตตาล็อกผลิตภัณฑ์แบบคลาสสิก -
{
"$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"]
}
ลองตรวจสอบคำหลักที่สำคัญต่างๆที่สามารถใช้ในสคีมานี้ -
ซีเนียร์ | คำหลักและคำอธิบาย |
---|---|
1 |
$schema คีย์เวิร์ด $ schema ระบุว่าสคีมานี้เขียนตามข้อกำหนด v4 แบบร่าง |
2 |
title คุณจะใช้สิ่งนี้เพื่อตั้งชื่อให้กับสคีมาของคุณ |
3 |
description คำอธิบายเล็กน้อยของสคีมา |
4 |
type คีย์เวิร์ดประเภทกำหนดข้อ จำกัด แรกในข้อมูล JSON ของเรา: ต้องเป็น JSON Object |
5 |
properties กำหนดคีย์ต่างๆและประเภทค่าค่าต่ำสุดและสูงสุดที่จะใช้ในไฟล์ JSON |
6 |
required ซึ่งจะเก็บรายการคุณสมบัติที่จำเป็น |
7 |
minimum นี่คือข้อ จำกัด ที่ต้องใส่ค่าและแสดงถึงค่าต่ำสุดที่ยอมรับได้ |
8 |
exclusiveMinimum หากมี "exclusiveMinimum" และมีค่าบูลีนเป็นจริงอินสแตนซ์จะใช้ได้หากมีค่ามากกว่าค่า "ต่ำสุด" อย่างเคร่งครัด |
9 |
maximum นี่คือข้อ จำกัด ที่ต้องใส่ค่าและแสดงถึงค่าสูงสุดที่ยอมรับได้ |
10 |
exclusiveMaximum หากมี "exclusiveMaximum" และมีค่าบูลีนเป็นจริงอินสแตนซ์นั้นจะใช้ได้หากมีค่าต่ำกว่าค่า "สูงสุด" อย่างเคร่งครัด |
11 |
multipleOf อินสแตนซ์ตัวเลขสามารถเทียบกับ "multipleOf" ได้หากผลลัพธ์ของการแบ่งอินสแตนซ์ตามค่าของคีย์เวิร์ดนี้เป็นจำนวนเต็ม |
12 |
maxLength ความยาวของอินสแตนซ์สตริงถูกกำหนดเป็นจำนวนอักขระสูงสุด |
13 |
minLength ความยาวของอินสแตนซ์สตริงถูกกำหนดเป็นจำนวนอักขระขั้นต่ำ |
14 |
pattern อินสแตนซ์สตริงจะถือว่าถูกต้องหากนิพจน์ทั่วไปตรงกับอินสแตนซ์สำเร็จ |
คุณสามารถตรวจสอบไฟล์ http://json-schema.orgสำหรับรายการคำหลักทั้งหมดที่สามารถใช้ในการกำหนดสคีมา JSON สคีมาข้างต้นสามารถใช้เพื่อทดสอบความถูกต้องของรหัส JSON ต่อไปนี้ -
[
{
"id": 2,
"name": "An ice sculpture",
"price": 12.50,
},
{
"id": 3,
"name": "A blue mouse",
"price": 25.50,
}
]