私が使用している残りのサービス応答は次の例に似ています。ここには3つのフィールドしか含めていませんが、さらに多くのフィールドがあります。
{
"results": [
{
"type": "Person",
"name": "Mr Bean",
"dateOfBirth": "14 Dec 1981"
},
{
"type": "Company",
"name": "Pi",
"tradingName": "Pi Engineering Limited"
}
]
}
上記(draft-04)のJSONスキーマファイルを記述します。これにより、次のことが明示的に指定されます。
if type == Person then list of required properties is ["type", "name", "dateOfBirth", etc]
OR
if type == "Company" then list of required properties is ["type", "name", "tradingName", etc]
しかし、それを行うためのドキュメントや例を見つけることができません。
現在、私のJSONスキーマは次のようになっています。
{
"$schema": "http://json-schema.org/draft-04/schema",
"type": "object",
"required": ["results" ],
"properties": {
"results": {
"type": "array",
"items": {
"type": "object",
"required": ["type", "name"],
"properties": {
"type": { "type": "string" },
"name": { "type": "string" },
"dateOfBirth": { "type": "string" },
"tradingName": { "type": "string" }
}
}
}
}
}
これをどのように処理すべきかについてのポインタ/例。
推奨されるアプローチは Json-Schema web、Example2 に示すものだと思います。 「値によって」スキーマを選択するには、列挙型を使用する必要があります。あなたの場合、それは次のようなものになります:
{
"type": "object",
"required": [ "results" ],
"properties": {
"results": {
"type": "array",
"items": {
"oneOf": [
{ "$ref": "#/definitions/person" },
{ "$ref": "#/definitions/company" }
]
}
}
},
"definitions": {
"person": {
"properties": {
"type": { "enum": [ "person" ] },
"name": {"type": "string" },
"dateOfBirth": {"type":"string"}
},
"required": [ "type", "name", "dateOfBirth" ],
"additionalProperties": false
},
"company": {
"properties": {
"type": { "enum": [ "company" ] },
. . .
}
}
}
}
ごめんなさい、
ポイントがわかりません。問題は、最後のJSONスキーマ仕様の一部である 'dependencies'キーワードについてですよね?
受け入れられた回答に「依存関係」が見つかりません(?)
最終ドラフトで簡単に説明されています。しかし http://usingjsonschema.com は、本のプロパティと定義の両方の依存関係を説明しています。
http://usingjsonschema.com/assets/UsingJsonSchema_20140814.pdf
29ページから開始(30ページで説明を参照)
"dependencies": {
"shipTo":["shipAddress"],
"loyaltyId":["loyaltyBonus"]
}