首页 > 解决方案 > JSON 模式 - 基于另一个下拉菜单在下拉菜单中显示值

问题描述

我已经定义了JSON Schema,我正在使用JSON Editor呈现一个具有两个下拉列表(品牌和设备)的表单,预期的表单如下所示:

在此处输入图像描述

品牌下拉列表包含 3 个值:

同样,设备下拉列表也包含 3 个值:

但是,在设备下拉列表中呈现值是有条件的,条件如下:

  1. 如果设备戴尔,那么只需将笔记本电脑平板电脑显示为设备
  2. 否则显示所有可用的设备

我使用了 JSON 模式草案 7 的If thenelse来实现预期的结果,到目前为止我的解决方案如下所示(这是交互式 JSON Schema 游乐场的链接):

{
  "required": [
    "brands",
    "devices"
  ],
 "properties": {
  "brands": {
   "$ref": "#/definitions/brands"
  }
 },
 "definitions":{
   "brands": {
     "title": "Brands",
     "type": "string",
     "enum": [
       "Apple",
       "Google",
       "Dell"
      ],
     "default": "Apple"
   },
  "all_devices": {
     "type": "string",
     "enum": [
       "Laptop",
       "Tablet",
       "Phone"
      ]
   },
   "dell_devices": {
     "type": "string",
     "enum": [
       "Laptop",
       "Tablet"
      ]
    }
 },
 "if": {
  "properties": {
   "brands": {
     "const" : "Dell"
   },
   "required": [
      "devices"
    ]
  },
  "then": {
   "properties": {
    "devices": {
      "$ref": "#/definitions/dell_devices"
     }
   },
   "required": [
      "devices"
    ]
  },
  "else":{
   "properties": {
    "devices": {
      "$ref": "#/definitions/all_devices"
     }
   },
   "required": [
      "devices"
    ]
  }
 }
}

但是,第二个下拉菜单(Devices)根本没有显示,我不确定如何调试这个问题,因为我是 JSON 模式的新手。

如果有人能引导我走向正确的方向,或者建议任何其他方法来实现我想要的结果,我真的很感激。

非常感谢!

标签: jsonvalidationjsonschemajsoneditor

解决方案


推荐阅读