gpt4 book ai didi

json - 如何在 json-schema 中定义自定义对象类型

转载 作者:行者123 更新时间:2023-12-03 16:27:47 24 4
gpt4 key购买 nike

假设我有几个对象,如 Vehicle 和 Computer。

{"brand":"Ford", "dateOfManufacture":"23/082015"}
{"brand":"Apple", "dateOfManufacture":"23/082015"}

我知道我可以表示如下的车辆模式。然而,查看模式并不能告诉我它是对象类型车辆还是计算机。如何将该信息放入 JSON。 json-schema 是否提供自定义类型支持。因此,与其说“类型”:“对象”,不如说“类型”:“车辆”。
{
"description": "schema validating people",
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"firstName": {"type": "string"},
"lastName": {"type": "string"}
}
}
}

TIA

最佳答案

虽然你不能定义一个新的 type明确地,您可以定义一个描述该类型对象外观的模式,然后在您的主模式中引用它。

{
"$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" }
}
}
此示例描述了一个具有字段 primary 的对象和 secondary都是“类型” vehicle - 即数据必须匹配描述什么的架构 vehicle好像。
在类型化编程语言中,类型的概念用于传达数据的形状,但也用于传达有关该数据身份的一些信息 - 即它为结构的特定定义提供身份或名称。
struct Foo { int a; string b; }
struct Bar { int a; string b; }

function quux(Foo foo) { ... }
在这个虚拟示例中,您不能传递 Bar进入 Quux ,尽管它看起来就像一个 Foo .这是因为除了描述数据的形状( int a; string b; )之外,类型还定义了数据结构的身份。
JsonSchema 是关于描述数据的形状——即原始类型如何组合在某种结构中,但没有说明身份。它关心字段的名称以及它们的结构方式,但不关心您将架构称为什么(或者类似地, struct 的名称)。

关于json - 如何在 json-schema 中定义自定义对象类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32263648/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com