JSON架构对外部字段的依赖关系 [英] Json Schema dependency on outer field

查看:5
本文介绍了JSON架构对外部字段的依赖关系的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

给定如下的json结构

{
 "name": "John Doe",
 "billing_address": "123 main st",
 "payment_details":{"credit_card": 55555555}
}

如果Payment_Details.Credit_Card存在,我需要将‘Billing_Address’设置为必填字段。

我从这个示例开始,如果两个字段处于相同的嵌套级别,则可以实现

{
  "type": "object",

  "properties": {
    "name": { "type": "string" },
    "credit_card": { "type": "number" }
  },

  "required": ["name"],

  "dependencies": {
    "credit_card": {
      "properties": {
        "billing_address": { "type": "string" }
      },
      "required": ["billing_address"]
    }
  }
}

但是,要求此字段高于Dependant字段一级的语法是什么?

推荐答案

对于"依赖项"来说太复杂了,所以我们回到if/Then/Else子句。我们将这些关键字放在顶层,即必填字段所在的位置。在伪代码中:如果存在Payment_Detail属性,并且它具有Credit_Card属性,则需要BILLING_ADDRESS。&Q;

{
  ...,
  "if": {
    "type": "object",
    "required": [ "payment_details" ],
    "properties": {
      "payment_details": {
        "type": "object",
        "required": [ "credit_card" ]
      }
    },
  "then": {
    "type": "object",
    "required": [ "billing_address" ]
  }
}

请注意,此处需要";type";和";Required";关键字--因为不同类型的数据(例如数组)会导致对象特定的关键字(如";Properties";和";Required";)始终求值为True。

这篇关于JSON架构对外部字段的依赖关系的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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