Ris*_*raf 6 schema json jsonschema
假设我有几个对象,如 Vehicle 和 Computer。
{"brand":"Ford", "dateOfManufacture":"23/082015"}
{"brand":"Apple", "dateOfManufacture":"23/082015"}
Run Code Online (Sandbox Code Playgroud)
我知道我可以表示如下的车辆模式。然而,查看模式并不能告诉我它是对象类型车辆还是计算机。如何将该信息放入 JSON。json-schema 是否提供自定义类型支持。因此,与其说“类型”:“对象”,不如说“类型”:“车辆”。
{
"description": "schema validating people",
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"firstName": {"type": "string"},
"lastName": {"type": "string"}
}
}
}
Run Code Online (Sandbox Code Playgroud)
TIA
虽然您无法type显式定义 new ,但您可以定义一个描述该类型对象的外观的架构,然后在您的主架构中引用它。
{
"$schema": "http://json-schema.org/draft-07/schema",
"definitions": {
"vehicle": {
"type": "object",
"properties": {
"brand": {
"type": "string",
"enum": ["ford","toyota"]
},
"dateOfManufacture": {
"type": "string"
}
}
}
},
"type": "object",
"properties": {
"primary": { "$ref": "#/definitions/vehicle" },
"secondary": { "$ref": "#/definitions/vehicle" }
}
}
Run Code Online (Sandbox Code Playgroud)
这个例子描述了一个具有字段primary并且secondary都是“类型”的对象vehicle——即数据必须与描述 avehicle外观的模式相匹配。
在类型化编程语言中,类型的概念用于传达数据的形状,但也用于传达有关该数据身份的一些信息 - 即它为结构的特定定义提供身份或名称。
struct Foo { int a; string b; }
struct Bar { int a; string b; }
function quux(Foo foo) { ... }
Run Code Online (Sandbox Code Playgroud)
在这个虚拟例如,你可以不通过Bar进入Quux,即使它看起来就像一个Foo。这是因为除了描述数据的形状 ( int a; string b;) 之外,类型还定义了数据结构的身份。
JsonSchema 是关于描述数据的形状——即原始类型如何组合在某种结构中,但没有说明身份。它关心字段的名称以及它们的结构方式,但不关心您将架构称为什么(或类似地, 的名称struct)。
您还可以在架构中添加产品类型,例如:-
{"brand":"Ford", "dateOfManufacture":"23/082015", "productType":"vehicle"}
{"brand":"Apple", "dateOfManufacture":"23/082015", "productType":"computer"}
Run Code Online (Sandbox Code Playgroud)
在决定架构时,您可以确保它具有产品分类的所有必要信息。
| 归档时间: |
|
| 查看次数: |
8372 次 |
| 最近记录: |