0

私はjsonスキームを設計しています。スキーマの設計中にいくつかの問題に直面しています。

これが問題です。

グループ オブジェクトの配列があります。この配列に一意のグループ オブジェクトを含める必要があります。オブジェクト ID (例: group.id) に基づいてそれらを一意にしたい

(groups[0].id == groups[1].id)グループ ID のみに基づいて一意にしたい場合、グループ配列は一意ではありません。以下は私のJson構造です。

"groups": {
        "type": "array",
        "items": {"$ref": "#/group"},
        "uniqueItems":true
    },

 "group": {
        "type": "object",
        "properties": {
            "id": {"type": "integer"},
            "type": {
                "type": "string",
                "enum": [
                    "a",
                    "b"
                ]
            },
            "command": {
                "type": "string",
                "enum": [
                    "add",
                    "modify"
                ]
            }
        }
    },
4

1 に答える 1

1

まあ、ここには魔法の弾丸はありません。Json-Schema は、Json データ (値ではない) の構造を定義することを目的としていることを思い出してください。

1 つのオプションは、グループ ノードを "配列" ではなく "オブジェクト" と見なし、 additionalProperties を使用して、すべての追加プロパティに "type" および "command" プロパティを含める必要があることを表すことです。

次に、グループ内の各プロパティの名前を ID として使用するため、一意になります。

このアプローチの問題は、この ID を数値に制限していないことです (状況によっては受け入れられない場合があります)。patternProperties を使用して、「type,command」スキーマを数値の「id」に一致させることもできます。

于 2013-09-18T15:11:31.110 に答える