JSON Schema - 基于选定值的下拉列表其他下拉列表

Joe*_*oey 2 json jsonschema json-schema-validator dropdown

假设我有以下数据结构

Option A
Option B
    Option B1
        Option B2.1
        Option B2.2
Run Code Online (Sandbox Code Playgroud)

我正在尝试创建一个允许这样做的枚举结构,以便我可以根据先前选择的下拉列表的值生成一个下拉列表。

例子 :

Select option A -> No additional dropdowns
Select option B -> Generate dropdown with Option B1
Select option B1 -> Generate dropdown with Option B2.1 and Option B2.2
Run Code Online (Sandbox Code Playgroud)

当你想用 childeren 创建一个数组时,这会起作用 enums 是否有任何类似的可能

{
  "$schema": "http://json-schema.org/draft-07/schema#",

  "definitions": {
    "medicine": {
      "type": "object",
      "properties": {
        "value": { "type": "string" },
        "categories": {
          "type": "array",
          "items": { "$ref": "#/definitions/medicine" }
        }
      }
    }
  },
  "properties": {
    "person": { "$ref": "#/definitions/medicine" }
  }
Run Code Online (Sandbox Code Playgroud)

}

然后枚举结构是这样的

[
     { 
        "value ":  "Option A" 
     }, 
     { 
        "value ":  "Option B ", 
        "categories ": [ 
         { 
            "value ":  "Option B1 ", 
            "categories ": [ 
             {
                "value ":  "Option B1.1" 
             }, 
             { 
                "value ":  "Option B1.2" 
             } 
           ] 
         } 
       ] 
    }
]
Run Code Online (Sandbox Code Playgroud)

所以我正在寻找一种数据结构,它允许我根据在自己的布局生成引擎中选择的值进行下拉。

cus*_*der 6

您是否考虑过扁平化您的结构,以便更轻松地查找选项和子选项?

假设您有一个用于根选项的初始数组:

[
  'opt_a',
  'opt_b'
]
Run Code Online (Sandbox Code Playgroud)

然后你有一个所有选项的扁平化地图,​​你可以从中导出标签和后续下拉列表:

{
  opt_a: {
    label: 'Option A'
  },
  opt_b: {
    label: 'Option B',
    children: ['opt_b1']
  },
  opt_b1: {
    label: 'Option B1',
    children: ['opt_b11', 'opt_b12']
  }
  opt_b11: {
    label: 'Option B1.1'
  }
  opt_b12: {
    label: 'Option B1.2'
  }
}
Run Code Online (Sandbox Code Playgroud)

我希望这能回答你的问题并且是不言自明的。