5

次の 2 次元配列をJSON スキーマでどのように記述しますか? グリッドは 16*13 に固定されています。完全に空の行、または int(0-99) や空の文字列などの値を持つ行が含まれています。

配列の例を次に示します。

[  
  [],  
  [],  
  [],  
  [],  
  [],  
  [],  
  ['','','','',94,78,37,78,'','','',61,71],
  [42,82,53,62,65,47,65,77,26,93,69,69,51],
  [38,07,47,06,87,90,21,41,50,24,55,45,24],
  [55,69,'','','',83,04,90,34,88,99,28,71],
  [11,08,91,62,'','','','',36,53,57,76,65],
  [21,85,34,62,'','','','',76,67,20,77,85],
  [72,73,34,26,'','','','',37,22,49,89,26],
  [84,11,19,84,34,53,19,08,10,12,31,62,24],
  [36,94,43,27,71,30,86,96,37,45,19,60,50],
  [31,05,27,74,10,33,22,07,03,77,82,23,50]  
]

何百ものLOCなしでこれを書く最良の方法は何だろうか...

前もって感謝します!

4

1 に答える 1

7

では、これをパーツごとに組み立てていきましょう。

最初に、空の文字列または整数のいずれかである、グリッド内の単一のエントリ。

{
    "oneOf": [
        {
            "enum": [""]
        },
        {
            "type": "integer",
            "minimum": 0,
            "maximum": 99
        }
    ]
}

次に、単一の行を定義しましょう。これは空にすることも、正確に 13 項目の長さにすることもできます。

{
    "type": "array",
    "items": {"$ref": "#/definitions/gridCell"},
    "oneOf": [
        {"enum": [[]]}, // Alternatively: {"maxItems": 0}
        {"minItems": 13, "maxItems": 13}
    ]
}

ここで、これらのうち 16 個の配列が必要です。

{
    "type": "array",
    "items": {"$ref": "#/definitions/gridRow"},
    "minItems": 16,
    "maxItems": 16,
    "definitions": {
        "gridCell": { ... schema from step #1 ... },
        "gridRow": { ... schema from step #2 ... }
    }
}
于 2013-11-06T18:09:24.487 に答える