Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Membangun dan menggunakan definisi tipe dalam dokumen skema kemampuan
Semua elemen dalam skema memutuskan untuk mengetik definisi. Definisi tipe ini adalah definisi tipe primitif (seperti boolean, string, angka) atau definisi tipe namespaced (definisi tipe yang dibangun dari definisi tipe primitif untuk kenyamanan).
Saat Anda mendefinisikan skema khusus, Anda dapat menggunakan definisi primitif dan definisi tipe namespace.
Daftar Isi
Definisi tipe primitif
Definisi tipe primitif adalah blok bangunan untuk semua definisi tipe yang didefinisikan dalam integrasi terkelola. Semua definisi namespace, termasuk definisi tipe kustom, diselesaikan ke definisi tipe primitif baik melalui $ref
kata kunci atau kata kunci. type
Semua tipe primitif dapat dibatalkan dengan menggunakan nullable
kata kunci, dan Anda dapat mengidentifikasi semua tipe primitif dengan menggunakan kata kunci. type
Boolean
Jenis Boolean mendukung nilai default.
Definisi sampel:
{ "type" : "boolean", "default" : "false", "nullable" : true }
Dukungan tipe integer
Jenis integer mendukung hal berikut:
-
Nilai
default
-
Nilai
maximum
-
Nilai
minimum
-
Nilai
exclusiveMaximum
-
Nilai
exclusiveMinimum
-
Nilai
multipleOf
Jika nilai yang x
divalidasi, berikut ini harus benar:
-
x
≥minimum
x
>exclusiveMinimum
x
<exclusiveMaximum
catatan
Angka dengan bagian pecahan nol dianggap bilangan bulat, tetapi angka floating point ditolak.
1.0 // Schema-Compliant 3.1415926 // NOT Schema-Compliant
Meskipun Anda dapat menentukan keduanya minimum
dan exclusiveMinimum
atau keduanya maximum
danexclusiveMaximum
, kami tidak menyarankan untuk menggunakan keduanya secara bersamaan.
Contoh definisi:
{ "type" : "integer", "default" : 2, "nullable" : true, "maximum" : 10, "minimum" : 0, "multipleOf": 2 }
Definisi alternatif:
{ "type" : "integer", "default" : 2, "nullable" : true, "exclusiveMaximum" : 11, "exclusiveMinimum" : -1, "multipleOf": 2 }
Nomor
Gunakan jenis angka untuk jenis numerik apa pun, termasuk bilangan bulat dan angka floating point.
Jenis nomor mendukung hal berikut:
-
Nilai
default
-
Nilai
maximum
-
Nilai
minimum
-
Nilai
exclusiveMaximum
-
Nilai
exclusiveMinimum
-
multipleOf
nilai. Kelipatannya bisa menjadi nomor floating point.
Jika nilai yang x
divalidasi, berikut ini harus benar:
-
x
≥minimum
x
>exclusiveMinimum
x
<exclusiveMaximum
Meskipun Anda dapat menentukan keduanya minimum
dan exclusiveMinimum
atau keduanya maximum
danexclusiveMaximum
, kami tidak menyarankan untuk menggunakan keduanya secara bersamaan.
Contoh definisi:
{ "type" : "number", "default" : 0.4, "nullable" : true, "maximum" : 10.2, "minimum" : 0.2, "multipleOf": 0.2 }
Definisi alternatif:
{ "type" : "number", "default" : 0.4, "nullable" : true, "exclusiveMaximum" : 10.2, "exclusiveMinimum" : 0.2, "multipleOf": 0.2 }
String
Jenis string mendukung hal berikut:
-
Nilai
default
-
kendala panjang (harus angka non-negatif) termasuk dan nilai
maxLength
minLength
-
pattern
nilai untuk ekspresi reguler
Saat Anda mendefinisikan ekspresi reguler, string valid jika ekspresi cocok di mana saja di dalam string. Misalnya, ekspresi reguler p
cocok dengan string apa pun yang mengandung p, seperti “apple”, bukan hanya string “p”. Untuk kejelasan, kami sarankan mengelilingi ekspresi reguler dengan ^...$
(misalnya,^p$
), kecuali Anda memiliki alasan khusus untuk tidak melakukannya.
Definisi sampel:
{ "type" : "string", "default" : "defaultString", "nullable" : true, "maxLength": 10, "minLength": 1, "pattern" : "^([0-9a-fA-F]{2})+$" }
Nulls
Tipe nol hanya menerima satu nilai:null
.
Definisi sampel:
{ "type": "null" }
Array
Jenis array mendukung hal berikut:
-
default
— daftar yang akan digunakan sebagai nilai default. -
items
— Definisi tipe JSON dikenakan pada semua elemen array. -
Kendala panjang (harus berupa angka non-negatif)
-
minItems
-
maxItems
-
-
pattern
nilai untuk Regex -
uniqueItems
— boolean yang menunjukkan jika elemen dalam array harus unik -
prefixItems
— sebuah array di mana setiap item adalah skema yang sesuai dengan setiap indeks dari array dokumen. Artinya, array di mana elemen pertama memvalidasi elemen pertama dari array input, elemen kedua memvalidasi elemen kedua dari array input, dan seterusnya.
Definisi sampel:
{ "type": "array", "default": ["1", "2"], "items" : { "type": "string", "pattern": "^([a-zA-Z0-9_ -/]+)$" }, "minItems" : 1, "maxItems": 4, "uniqueItems" : true, }
Contoh validasi array:
//Examples: ["1", "2", "3", "4"] // Schema-Compliant [] // NOT Schema-Compliant: minItems=1 ["1", "1"] // NOT Schema-Compliant: uniqueItems=true ["{"] // NOT Schema-Compliant: Does not match the RegEx pattern.
Definisi alternatif menggunakan validasi Tuple:
{ "type": "array", "prefixItems": [ { "type": "number" }, { "type": "string" }, { "enum": ["Street", "Avenue", "Boulevard"] }, { "enum": ["NW", "NE", "SW", "SE"] } ] } //Examples: [1600, "Pennsylvania", "Avenue", "NW"] // Schema-Compliant // And, by default, it's also okay to add additional items to end: [1600, "Pennsylvania", "Avenue", "NW", "Washington"] // Schema-Compliant
Objek
Jenis objek mendukung hal berikut:
-
Kendala properti
-
properties
— Tentukan properti (pasangan kunci-nilai) dari suatu objek dengan menggunakan kata kunci.properties
Nilaiproperties
adalah objek, di mana setiap kunci adalah nama properti dan setiap nilai adalah skema yang digunakan untuk memvalidasi properti itu. Properti apa pun yang tidak cocok dengan nama properti dalamproperties
kata kunci diabaikan oleh kata kunci ini. -
required
— Secara default, properti yang ditentukan olehproperties
kata kunci tidak diperlukan. Namun, Anda dapat memberikan daftar properti yang diperlukan menggunakanrequired
kata kunci.required
Kata kunci mengambil array nol atau lebih string. Masing-masing string ini harus unik. -
propertyNames
— Kata kunci ini memungkinkan kontrol atas RegEx pola untuk nama properti. Misalnya, Anda mungkin ingin menegakkan bahwa semua properti objek memiliki nama mengikuti konvensi tertentu. -
patternProperties
— Ini memetakan ekspresi reguler ke skema. Jika nama properti cocok dengan ekspresi reguler yang diberikan, nilai properti harus memvalidasi terhadap skema yang sesuai. Misalnya, gunakanpatternProperties
untuk menentukan bahwa nilai harus cocok dengan skema tertentu, mengingat jenis nama properti tertentu. -
additionalProperties
Kata kunci ini mengontrol bagaimana properti tambahan ditangani. Properti tambahan adalah properti yang namanya tidak tercantum dalam kata kunci properti atau yang cocok dengan ekspresi reguler mana punpatternProperties
. Secara default, properti tambahan diperbolehkan. Menyetel bidang inifalse
berarti tidak ada properti tambahan yang diizinkan. -
unevaluatedProperties
— Kata kunci ini mirip denganadditionalProperties
kecuali bahwa ia dapat mengenali properti yang dideklarasikan dalam subskema.unevaluatedProperties
bekerja dengan mengumpulkan properti apa pun yang berhasil divalidasi saat memproses skema dan menggunakannya sebagai daftar properti yang diizinkan. Ini memungkinkan Anda melakukan hal-hal yang lebih kompleks seperti menambahkan properti secara kondisional. Lihat contoh di bawah ini untuk lebih jelasnya.
-
-
anyOf
— Nilai kata kunci ini HARUS berupa array yang tidak kosong. Setiap item dari array HARUS menjadi Skema JSON yang valid. Sebuah instance berhasil memvalidasi terhadap kata kunci ini jika berhasil memvalidasi terhadap setidaknya satu skema yang ditentukan oleh nilai kata kunci ini. -
oneOf
— Nilai kata kunci ini HARUS berupa array yang tidak kosong. Setiap item dari array HARUS menjadi Skema JSON yang valid. Sebuah instance berhasil memvalidasi terhadap kata kunci ini jika berhasil memvalidasi dengan tepat satu skema yang ditentukan oleh nilai kata kunci ini.
Contoh yang diperlukan:
{ "type": "object", "required": ["test"] } // Schema Compliant { "test": 4 } // NOT Schema Compliant {}
PropertyNames contoh:
{ "type": "object", "propertyNames": { "pattern": "^[A-Za-z_][A-Za-z0-9_]*$" } } // Schema Compliant { "_a_valid_property_name_001": "value" } // NOT Schema Compliant { "001 invalid": "value" }
PatternProperties contoh:
{ "type": "object", "patternProperties": { "^S_": { "type": "string" }, "^I_": { "type": "integer" } } } // Schema Compliant { "S_25": "This is a string" } { "I_0": 42 } // NOT Schema Compliant { "S_0": 42 } // Value must be a string { "I_42": "This is a string" } // Value must be an integer
AdditionalProperties contoh:
{ "type": "object", "properties": { "test": { "type": "string" } }, "additionalProperties": false } // Schema Compliant { "test": "value" } OR {} // NOT Schema Compliant { "notAllowed": false }
UnevaluatedProperties contoh:
{ "type": "object", "properties": { "standard_field": { "type": "string" } }, "patternProperties": { "^@": { "type": "integer" } // Allows properties starting with '@' }, "unevaluatedProperties": false // No other properties allowed } // Schema Compliant { "standard_field": "some value", "@id": 123, "@timestamp": 1678886400 } // This passes because "standard_field" is evaluated by properties, // "@id" and "@timestamp" are evaluated by patternProperties, // and no other properties remain unevaluated. // NOT Schema Compliant { "standard_field": "some value", "another_field": "unallowed" } // This fails because "another_field" is unevaluated and doesn't match // the @ pattern, leading to a violation of unevaluatedProperties: false
AnyOf contoh:
{ "anyOf": [ { "type": "string", "maxLength": 5 }, { "type": "number", "minimum": 0 } ] } // Schema Compliant "short" 12 // NOT Schema Compliant "too long" -5
OneOf contoh:
{ "oneOf": [ { "type": "number", "multipleOf": 5 }, { "type": "number", "multipleOf": 3 } ] } // Schema Compliant 10 9 // NOT Schema compliant 2 // Not a multiple of either 5 or 3 15 // Multiple of both 5 and 3 is rejected.
Definisi tipe namespaced
Definisi tipe namespaced adalah tipe yang dibangun dari tipe primitif. Tipe ini harus mengikuti format Integrasi
terkelola menyediakan tipe yang telah ditentukan di bawah namespace
.typename
.aws
dan matter
ruang nama. Anda dapat menggunakan namespace apa pun untuk jenis kustom kecuali ruang nama yang dicadangkan aws
danmatter
.
Untuk menemukan definisi tipe namespace yang tersedia, gunakan ListSchemaVersionsAPI dengan Type
filter disetel ke. definition
Jenis matter
Temukan tipe data di bawah matter
namespace menggunakan ListSchemaVersionsAPI dengan Namespace
filter disetel ke matter
dan filter disetel keType
. definition
Jenis aws
Temukan tipe data di bawah aws
namespace menggunakan ListSchemaVersionsAPI dengan Namespace
filter disetel ke aws
dan filter disetel keType
. definition
Definisi jenis bitmap
Bitmap memiliki dua properti yang diperlukan:
type
harus menjadi objekproperties
harus berupa objek yang berisi setiap definisi bit. Setiap bit adalah objek dengan propertiextrinsicId
danvalue
. Nilai setiap bit harus berupa bilangan bulat dengan nilai minimum 0 dan nilai maksimum minimal 1.
Contoh definisi bitmap:
{ "title" : "Sample Bitmap Type", "description" : "Type definition for SampleBitmap.", "$ref" : "/schema-versions/definition/aws.bitmap@1.0 ", "type" : "object", "additionalProperties" : false, "properties" : { "Bit1" : { "extrinsicId" : "0x0000", "value" : { "type" : "integer", "maximum" : 1, "minimum" : 0 } }, "Bit2" : { "extrinsicId" : "0x0001", "value" : { "type" : "integer", "maximum" : 1, "minimum" : 0 } } } } // Schema Compliant { "Bit1": 1, "Bit1": 0 } // NOT Schema Compliant { "Bit1": -1, "Bit1": 0 }
Definisi tipe enum
Enum membutuhkan tiga properti:
-
type
harus menjadi objek -
enum
harus berupa array string unik, dengan minimal satu item -
extrinsicIdMap
adalah objek dengan properti yang merupakan nilai enum. Nilai masing-masing properti harus menjadi pengidentifikasi ekstrinsik yang sesuai dengan nilai enum.
Contoh definisi enum:
{ "title" : "SampleEnum Type", "description" : "Type definition for SampleEnum.", "$ref" : "/schema-versions/definition/aws.enum@1.0", "type" : "string", "enum" : [ "EnumValue0", "EnumValue1", "EnumValue2" ], "extrinsicIdMap" : { "EnumValue0" : "0", "EnumValue1" : "1", "EnumValue2" : "2" } } // Schema Compliant "EnumValue0" "EnumValue1" "EnumValue2" // NOT Schema Compliant "NotAnEnumValue"