【问题标题】:How to make a two dimensional array in JSON Schema?如何在 JSON Schema 中制作二维数组?
【发布时间】:2013-11-05 15:55:43
【问题描述】:

您将如何在JSON schema 中编写以下二维数组?网格固定为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 的情况下编写这个的最佳方法是什么......

提前致谢!

【问题讨论】:

  • 这个问题基本上归结为:“你如何定义一个数组只有特定类型的元素?”因为 JSON 没有多维数组,只有数组。数组中的任何给定元素都可能是另一个数组,但只有其中一些元素是完全有效的。例如,[[1, 2, 3], "foo", {}]

标签: arrays json jsonschema


【解决方案1】:

好的,让我们分部分构建它。

首先,网格中的单个条目,可以是空字符串或整数。

{
    "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 ... }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-05
    • 2015-07-12
    • 1970-01-01
    • 1970-01-01
    • 2019-01-11
    • 1970-01-01
    • 1970-01-01
    • 2011-01-26
    相关资源
    最近更新 更多