JSON スキーマを使用し、新しい型を許可したい (現在、文字列番号配列オブジェクト boolean と null があります)
たとえば、連絡先のタイプを追加したい
JSONでも可能ですか?助言がありますか?
ありがとう
JSON スキーマを使用し、新しい型を許可したい (現在、文字列番号配列オブジェクト boolean と null があります)
たとえば、連絡先のタイプを追加したい
JSONでも可能ですか?助言がありますか?
ありがとう
contact
一度定義して何度も再利用することが目標の場合は、object
名前付きの定義を作成し、contact
必要なときにいつでも JSON ポインターで参照できます。
その一例は次のようになります。
{
"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"
}
}
}
}
}
ここで、Person よりも Company の contact 属性に多くのプロパティを設定したいとします。allOf キーワードを使用すると、上記の Company は次のようになります。
"Company": {
"properties": {
"contact": {
"allOf": [
{"$ref" : "#/definitions/contact"},
{
"properties": {
"fax": {
"type": "string"
}
}
],
"inBusinessSince" : {
"type": "string",
"format": "date-time"
}
}
}
詳細については、次のリンクを参照してください。
はい、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"}
}
}
}
}
}
そのための json スキーマがあります: http://json-schema.org/card
json スキーマに含めるには:
{
"contact": { "$ref": "http://json-schema.org/card"}
}
「連絡先」の型はオブジェクト型になりますね。このオブジェクトには、アドレスを含む文字列など、いくつかの属性があります。したがって、新しい型を定義する必要はまったくありません。すべての新しい型は、分解すると、文字列、数値、配列、またはオブジェクトのプリミティブ型で構成されるためです。
連絡先の場合は、次のように記述できます。
"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 スキーマ仕様を知りません。