Materi
Tipe yang benar belum cukup. Stok -3 tetap integer, dan ISBN "978" tetap string. Kata kunci batas menutup celah itu. minimum dan maximum inklusif: nilai yang sama dengan batas lolos. exclusiveMinimum dan exclusiveMaximum eksklusif: nilai harus lebih besar atau lebih kecil daripada batasnya. Spesifikasi validasi menulis setiap kata kunci angka dengan syarat "bila data berupa angka", sehingga skema yang hanya berisi minimum meloloskan teks apa pun. Karena itu batas selalu dipasangkan dengan type.
{
"stok": { "type": "integer", "minimum": 0 },
"rating": { "type": "number", "minimum": 1, "maximum": 5 },
"isbn": { "type": "string", "pattern": "^97[89][0-9]{10}$" },
"judul": { "type": "string", "minLength": 1, "maxLength": 120 },
"bahasa": { "enum": ["id", "en"] }
}minLength dan maxLength menghitung karakter. Spesifikasi mendefinisikan panjang teks sebagai banyaknya karakter menurut RFC 8259, sedangkan MDN mencatat length di JavaScript menghitung unit kode UTF-16. Emoji 📚 satu karakter, tetapi "📚".length bernilai 2; [...teks].length menghitung karakter seperti yang dimaksud skema. pattern memakai ekspresi reguler dialek JavaScript dan tidak otomatis berjangkar: pola [0-9]{5} cocok dengan "Kode 901234" karena lima digit berurutan ada di dalamnya. Tulis ^ dan $ bila seluruh teks harus cocok.
enum membatasi nilai pada daftar tetap. Kesamaan dinilai menurut tipe dan nilai, jadi enum [1, 2] menolak teks "1", dan enum ["id", "en"] menolak "ID".