我想使用JSON Schema并允许新类型(目前有字符串数组数组对象boolean和null)
例如我想添加联系人类型
甚至可以在JSON中使用吗?有什么建议吗?
感谢
答案 0 :(得分:2)
是的,我们可以在JSON中添加联系人类型
让我们说你的程序需要这种格式的联系类型数据
{
contact: [
{contactid:1, contactname: "abc", address:"abcdfg"},
{contactid:2, contactname: "hjk", address:"hjkdfg"}
]
}
此处Contact对象具有id,名称和地址。 我们可以为联系人创建一个模式
{
"type" : "object",
"properties": {
"contact":{
"type":"object"
"items":{
"type": "object",
"properties":{
"contactid": {"type":"number"}
"contactname": {"type":"string"}
"address": {"type":"string"}
}
}
}
}
}
答案 1 :(得分:2)
如果您的目标是定义contact
一次并重复使用多次,则可以为名为object
的{{1}}创建定义,然后使用JSON指针引用它你需要它的时间。
其中一个例子可能如下:
contact
现在假设您想要在公司的联系人属性上拥有比在Person上更多的属性。您可以使用allOf关键字,以便上面的公司现在看起来像这样:
{
"type": "object",
"definitions": {
"contact": {
"properties": {
"name": {
"type": "string"
},
"phone": {
"type": "string"
}
}
}
},
"properties": {
"Person": {
"properties": {
"contact": {
"$ref" : "#/definitions/contact"
},
"birthday": {
"type": "string",
"format": "date-time"
}
}
},
"Company": {
"properties": {
"contact": {
"$ref" : "#/definitions/contact"
},
"inBusinessSince" : {
"type": "string",
"format": "date-time"
}
}
}
}
}
有关详细信息,请参阅以下链接。
答案 2 :(得分:0)
“联系人”的类型是对象类型,不是吗?然后,该对象具有多个属性,例如包含地址的字符串。所以根本不需要定义新类型,因为每个新类型 - 如果你将其分解 - 包括基本类型字符串,数字,数组或对象。
所以对于联系人你可以写:
"contact"{
"id": "contact",
"required": false,
"type": "object",
"properties":{
"address"{
"id": "address",
"required": true,
"type": "string"
}
"phoneNumbers"{
"id": "phoneNumbers",
"required": false,
"type": "array",
"items":{
"id": "0",
"required": false,
"type": "object",
"properties":{
"type"{
"id": "type",
"required": false,
"type": "string"
}
"number"{
"id": "number",
"required": false,
"type": "string"
}
}
}
}
}
}
根据此模式,简单的联系对象可能如下所示:
{
"address": "Example Street 123",
"phoneNumbers":
[
{
"type": "home",
"number": "123-456789"
}
]
}
现在说你在另一个对象中有几个联系人,那么你必须在你存储联系人的每个地方添加联系方式。
如上所述,我认为没有必要引入新类型,尽管你的架构可能变得非常大。除此之外,我不知道任何允许新原始类型的JSON模式规范。
答案 3 :(得分:0)
有一个json架构:http://json-schema.org/card
将其包含在json架构中:
{
"contact": { "$ref": "http://json-schema.org/card"}
}