DevToolPal
ไทย

ตรวจสอบ JSON Schema

ตรวจสอบข้อมูล JSON กับ JSON Schema (2020-12, 2019-09, draft-07 หรือ draft-04) และดูทุกข้อผิดพลาดพร้อมพาธ

ทำงานในเครื่อง ไม่มีการอัปโหลด

ตัวเลือก

ข้อมูล JSON

JSON Schema

ผลการตรวจสอบ

ผลลัพธ์จะแสดงที่นี่

เครื่องมือนี้ทำอะไร

JSON Schema คือชุดคำศัพท์สำหรับอธิบายโครงสร้างของข้อมูล JSON: อ็อบเจ็กต์ต้องมีพร็อพเพอร์ตีใดบ้าง ค่าแต่ละตัวเป็นชนิดใด ช่วงและรูปแบบที่อนุญาต ความยาวอาร์เรย์ และอื่น ๆ อีกมาก API ใช้ในสเปก OpenAPI โปรแกรมแก้ไขใช้เพื่อเติมคำอัตโนมัติในไฟล์ตั้งค่า และฝั่งเซิร์ฟเวอร์ใช้เพื่อปฏิเสธคำขอที่ไม่ถูกต้อง

เครื่องมือนี้ตรวจเอกสาร JSON กับ schema และแสดงทุกปัญหาที่พบ ข้อผิดพลาดแต่ละรายการบอกตำแหน่งในข้อมูล (JSON Pointer เช่น /tags/1) ข้อความที่อ่านเข้าใจง่าย และคีย์เวิร์ดของ schema ที่ไม่ผ่าน ช่วยให้แก้ข้อมูลหรือ schema ได้รวดเร็ว รองรับ draft 2020-12, 2019-09, draft-07 และ draft-04 รวมถึง $ref, $defs, allOf/anyOf/oneOf, if/then/else, unevaluatedProperties และการตรวจรูปแบบ

วิธีใช้

  1. วางข้อมูลลงใน ข้อมูล JSON และวาง schema ลงใน JSON Schema หรืออัปโหลดไฟล์ทั้งสองฝั่ง ตัวอย่าง จะโหลดข้อมูลผู้ใช้ที่จงใจใส่ข้อผิดพลาดไว้บางจุด
  2. ผลลัพธ์อัปเดตขณะพิมพ์: ป้ายสีเขียวเมื่อข้อมูลถูกต้อง หากไม่ถูกต้องจะแสดงจำนวนและรายการข้อผิดพลาด
  3. ปล่อย เวอร์ชัน เป็นอัตโนมัติเพื่อทำตาม $schema หรือเลือกเวอร์ชันเอง ปิด แสดงข้อผิดพลาดทั้งหมด เพื่อหยุดที่ข้อผิดพลาดแรก
  4. คัดลอกข้อผิดพลาด จะคัดลอกรายการเป็นข้อความธรรมดา สำหรับรายงานบั๊กหรือการรีวิวโค้ด

หากฝั่งใดไม่ใช่ JSON ที่ถูกต้อง ข้อความจะบอกว่าปัญหาอยู่ที่ข้อมูลหรือ schema พร้อมบรรทัดและคอลัมน์

ตัวอย่าง

ด้วย schema นี้:

{
  "type": "object",
  "required": ["id"],
  "properties": {
    "id": { "type": "integer" },
    "age": { "type": "integer", "minimum": 0 }
  }
}

เอกสาร {"age": -1} จะได้ข้อผิดพลาดสองรายการ: ที่ (ราก) ขาดพร็อพเพอร์ตีบังคับ id และที่ /age ค่าน้อยกว่าค่าต่ำสุด 0

เคล็ดลับ

เพิ่ม "additionalProperties": false เพื่อจับชื่อพร็อพเพอร์ตีที่สะกดผิด ซึ่งไม่เช่นนั้นจะผ่านไปเงียบ ๆ ใช้ enum หรือ const สำหรับค่าคงที่ และ pattern สำหรับสตริงอย่างรหัสสินค้า เมื่อ schema ใหญ่ขึ้น ให้ย้ายส่วนที่ซ้ำไปไว้ใน $defs แล้วอ้างอิงด้วย $ref

คำถามที่พบบ่อย

› รองรับ JSON Schema เวอร์ชันใดบ้าง?

Draft 2020-12, 2019-09, draft-07 (ครอบคลุม draft-06 ด้วย) และ draft-04 เมื่อตั้ง เวอร์ชัน เป็นอัตโนมัติ จะอ่านเวอร์ชันจากคีย์เวิร์ด $schema ส่วน schema ที่ไม่มี $schema จะถือเป็น 2020-12

› พาธในข้อผิดพลาดหมายถึงอะไร?

พาธแรกคือ JSON Pointer ที่ชี้ไปยังค่าในข้อมูลที่ไม่ผ่าน เช่น /items/2/price ส่วน (ราก) หมายถึงทั้งเอกสาร บรรทัดสีเทาแสดงคีย์เวิร์ดที่ไม่ผ่านและตำแหน่งใน schema เช่น minimum · #/properties/age/minimum

› ตรวจรูปแบบอย่าง email และ date-time ด้วยไหม?

ตรวจ รูปแบบที่ใช้บ่อยจะถูกตรวจสอบ ได้แก่ date, time, date-time, duration, email, hostname, ipv4, ipv6, uri, uri-reference, uuid, regex, json-pointer และอื่น ๆ รูปแบบที่ไม่รู้จักจะถูกข้ามตามที่ข้อกำหนดอนุญาต

› schema อ้างอิงไฟล์อื่นได้ไหม?

การอ้างอิงภายใน schema เดียวกันใช้ได้ เช่น $ref ไปยัง #/$defs/address แต่จะไม่ดาวน์โหลด URL ภายนอก เพราะไม่มีข้อมูลใดออกจากเบราว์เซอร์ ให้วางนิยามที่อ้างถึงไว้ใน $defs แทน