40

次の JSON 出力データがあります。

{
   "label_name_0" : 0,
   "label_name_5" : 3,
   .
   .
   .
   "label_name_XXX" : 4
}

出力は単純です: 整数値に関連付けられたキー[1] 名。キー名が変わらない場合、次のような JSON スキーマを簡単に思いつくことができます。

    {
        "type": "array"
        "title": "Data output",
        "items" :{ 
            "properties": {
                "label_name": {
                   "type": "integer",
                   "default": 0,
                   "readonly": True,
            }
        }
    },

キー名自体は不明であり、変化し続けるため、スキーマを設計する必要があります。私が知っている唯一のことは、キーがstring100 文字以下であることです。lable_name_xxx変化し続けるキーの JSON スキーマを定義するにはどうすればよいですか。

[1] 正しい用語を使用しているかどうかわからない

4

3 に答える 3

51

json-schema.org のFile System Exampleセクションに適切なものがあります。patternProperties内で定義できますobject

{
    "type": "object",
    "properties": {
        "/": {}
    },
    "patternProperties": {
        "^(label_name_[0-9]+)+$": { "type": "integer" }
    },
    "additionalProperties": false,
 }

正規表現(label_name_[0-9]+)+はニーズに合うはずです。JSON スキーマでは、正規表現は明示的に と で固定され^てい$ます。正規表現は、少なくとも 1 つのプロパティ ( +) が必要であることを定義します。プロパティは ととlabel_name_の間の数値で構成されますが、少なくとも 1 つの数値が必要ですが、任意の数の数値が存在する場合もあります。09([0-9]+)

これを設定additionalPropertiesするfalseと、オブジェクトのプロパティが正規表現に一致するように制限されます。

于 2013-08-19T12:30:03.760 に答える