Json模式自动完成属性

时间:2017-09-05 08:50:29

标签: json xml

我已经在intellij环境中创建了自己的架构,并且它运行良好,但在自动完成方面仍然存在问题,它为架构提供了intellij,
例如,如果对象" car"在json模式中定义,然后intellij可以识别模式中有这样的对象,并且intellij将通过编码json将其作为建议给出,我面临的问题是建议包含所有对象在模式中定义,但期望是获得在另一个对象的独家新闻下定义的对象 这是我自己架构的一些代码:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "title": "Pipe File",
  "type": "object",
  "definitions": {
    "Pipe": {
      "type": "object",
      "properties": {
        "components": {
          "$ref": "#/definitions/components"
        }
      },
      "required": [
        "components"
      ]
    },
    "components": {
      "description": "section which defines the pipes in the file",
      "type": "array",
      "minItems": 1,
      "items": {
        "oneOf": [
          {
            "$ref": "#/definitions/setValuesComponent"
          },
          {
            "$ref": "#/definitions/invokeWebServicesComp"
          }
        ]
      }
    },
    "setValuesComponent": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "type": {
          "enum": [
            "setValuesComp"
          ]
        },
        "out": {
          "type": "object",
          "properties": {
            "dateFormat": {
              "$ref": "#/definitions/setValuesCompOut"
            },
            "dateTimeFormat": {
              "$ref": "#/definitions/setValuesCompOut"
            },
            "dateFormatBank": {
              "$ref": "#/definitions/setValuesCompOut"
            }
          }
        },
        "condition": {
        }
      },
      "required": [
        "name",
        "type",
        "out"
      ]
    },
    "setValuesCompOut": {
      "type": "object",
      "properties": {
        "exprValue": {
          "type": "string"
        },
        "ctxEntry": {
          "type": "string"
        },
        "value": {
          "type": "string"
        },
        "exprConst": {
          "type": "string",
          "pattern": "(Class|class)\\.\\w+\\.\\w+"
        }
      },
      "anyOf": [
        {
          "required": [
            "exprValue"
          ]
        },
        {
          "required": [
            "ctxEntry"
          ]
        },
        {
          "required": [
            "value"
          ]
        },
        {
          "required": [
            "exprConst"
          ]
        }
      ]
    },
    "invokeWebServicesComp": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "type": {
          "enum": [
            "invokeWebServices"
          ]
        },
        "mode": {
          "enum": [
            "innerJoin",
            "leftJoin",
            "union",
            "parallelJoin"
          ]
        },
        "method": {
          "type": "string"
        },
        "headers": {
          "$ref": "#/definitions/invokeWebServicesCompHeaders"
        },
        "dataFilePath": {
          "type": "string"
        },
        "restRelativeUrl": {
          "type": "string"
        },
        "in": {
          "$ref": "#/definitions/invokeWebServicesCompIn"
        },
        "out": {
          "$ref": "#/definitions/invokeWebServicesCompOut"
        }
      },
      "required": [
        "type",
        "name",
        "out",
        "in"
      ]
    },
    "invokeWebServicesCompOut": {
      "type": "object",
      "patternProperties": {
        "doc": {
          "type": "string",
          "pattern": ".+"
        }
      }
    },
    "invokeWebServicesCompHeaders": {
      "type": "object",
      "patternProperties": {
        ".{1,}": {
          "type": "string",
          "pattern": ".+"
        }
      }
    },
    "invokeWebServicesCompIn": {
      "type": "object",
      "patternProperties": {
        ".{1,}": {
          "type": "string",
          "pattern": ".+"
        }
      }
    },
    "properties": {
      "pipes": {
        "description": "section which defines the mandatory pipes object in the file",
        "type": "object",
        "patternProperties": {
          ".{1,}": {
            "$ref": "#/definitions/Pipe"
          }
        }
      }
    },
    "required": [
      "pipes"
    ]
  }
}

所以我期望的是,当对象的类型确定为" setValuesComp"时,自动完成将提示相关属性,这意味着它不会建议"在&# 34;属于" invokeWebServicesComp"的属性不是" setValuesComponent"。this picture show the auto complete problem in my real environment

1 个答案:

答案 0 :(得分:0)

您的JSON架构似乎无效。以下JSON内容应该出现在对象类型中。

"properties": {
  "pipes": {
    "description": "section which defines the mandatory pipes object in the file",
    "type": "object",
    "patternProperties": {
      ".{1,}": {
        "$ref": "#/definitions/Pipe"
      }
    }
  }
},
"required": [
  "pipes"
]

在您的架构中,它作为“定义”的一部分出现。请进行此更正,然后检查您是否能够获得建议。