如何在JSON模式中创​​建二维数组? [英] How to make a two dimensional array in JSON Schema?

查看:52
本文介绍了如何在JSON模式中创​​建二维数组?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

您如何在 JSON模式中编写以下二维数组?网格固定为16 * 13.它包含完全空的行或具有int(0-99)或空字符串之类的值的行.

How would you write the following two dimensional array in JSON schema? The grid is fixed to 16*13. It contains completely empty rows or row with values like int(0-99) or an empty string.

这是数组的一个示例:

[  
  [],  
  [],  
  [],  
  [],  
  [],  
  [],  
  ['','','','',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的最佳方式是什么...

I wonder what is the best way to write this without hundreds LOC...

提前谢谢!

推荐答案

好的,所以让我们按部分进行构建.

OK, so let's build this up by parts.

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

First, a single entry in the grid, either an empty string or an integer.

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

接下来,让我们定义一行-该行可以为空,也可以恰好是13个项目:

Next, let's define a single row - this can be empty, or exactly 13 items long:

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

现在,我们只需要一个由16个数组组成的数组:

Now, we just want an array of 16 of these:

{
    "type": "array",
    "items": {"$ref": "#/definitions/gridRow"},
    "minItems": 16,
    "maxItems": 16,
    "definitions": {
        "gridCell": { ... schema from step #1 ... },
        "gridRow": { ... schema from step #2 ... }
    }
}

这篇关于如何在JSON模式中创​​建二维数组?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆