Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json 在父节点的allOf if then条件中引用子节点_Json_Jsonschema - Fatal编程技术网

Json 在父节点的allOf if then条件中引用子节点

Json 在父节点的allOf if then条件中引用子节点,json,jsonschema,Json,Jsonschema,因此,需要在Json模式中插入IF-then条件和以下条件 如果LandMark1=USA,FlatNo=Excalibur 然后需要一个扇区 我不知道我应该把这个条件和它的语法放在哪里 我尝试在if-then-conditions-in-allOf中详细使用$ref作为地址和地标的父对象 但即使这样也不起作用,因为它无法找出参考 任何帮助都是非常明显的您需要使用关键字来描述这一点。最难的部分是if模式 您需要定义一个if模式,当给定满足条件的实例时,该模式将验证为true。单独开发此模式,然后

因此,需要在Json模式中插入IF-then条件和以下条件

  • 如果LandMark1=USA,FlatNo=Excalibur 然后需要一个扇区
  • 我不知道我应该把这个条件和它的语法放在哪里

    我尝试在if-then-conditions-in-allOf中详细使用$ref作为地址和地标的父对象 但即使这样也不起作用,因为它无法找出参考


    任何帮助都是非常明显的

    您需要使用
    关键字来描述这一点。最难的部分是
    if
    模式

    您需要定义一个
    if
    模式,当给定满足条件的实例时,该模式将验证为true。单独开发此模式,然后将其添加到完整模式中,这会有所帮助

        {
       "$schema":"https://json-schema.org/draft/2019-09/schema",
       "$id":"PersonalDetails.json",
       "type":"object",
       "properties":{
          "Header":{
             "type":"object",
             "properties":{
                "HeaderName":{
                   "type":"string"
                },
                "HeaderValue":{
                   "type":"string"
                }
             }
          },
          "Details":{
             "type":"array",
             "items":{
                "type":"object",
                "properties":{
                   "FName":{
                      "type":"string"
                   },
                   "LName":{
                      "type":"string"
                   },
                   "Address":{
                      "type":"object",
                      "properties":{
                         "FlatNo":{
                            "type":"string"
                         },
                         "Sector":{
                            "type":"string"
                         },
                         "LandMarks":{
                            "type":"object",
                            "properties":{
                               "LandMark1":{
                                  "type":"string"
                               },
                               "LandMark2":{
                                  "type":"string"
                               }
                            }
                         }
                      },
                      "required":[
                         "Sector"
                      ]
                   }
                }
             }
          }
       }
    }
    
    
    
    {
       "Header":{
          "HeaderName":"DummyName",
          "HeaderValue":"DummyName"
       },
       "Details":[
          {
             "FName":"Chicago",
             "LName":"Laos",
             "Address":{
                "FlatNo":"Excalibur",
                "Sector":"07",
                "LandMarks":{
                   "LandMark1":"USA",
                   "LandMark2":"UK"
                }
             }
          }
       ]
    }
    
    
    
        
        
    
    以下实例将通过对该架构的验证。如果FlatNo!=神剑或地标1!=美国

    {
      "type": "object",
      "properties": {
        "FlatNo": { "const": "Excalibur" },
        "LandMarks": {
          "type": "object",
          "properties": {
            "LandMark1": { "const": "USA" }
          },
          "required": ["LandMark1"]
        }
      },
      "required": ["LandMarks", "FlatNo"]
    }
    
    现在,将
    应用于地址模式应该很简单

    {
      "FlatNo":"Excalibur",
      "Sector":"07",
      "LandMarks":{
        "LandMark1":"USA",
        "LandMark2":"UK"
      }
    }
    

    对象
    地标
    应具有
    属性
    。如果您能展示您在
    $ref
    方面所做的尝试,那就太好了,因为这样我们就可以帮助解决问题。您好,对不起,我想我错过了刚才添加的if-then条件的所有详细属性。如果你还想我可以更新,没问题。我建议更新你的问题内容。是的,请更新以显示您到目前为止尝试的内容,我可能会提供帮助=]嗨,我已经更新了json模式,我没有进行我尝试的更新,因为这是不正确的。因此,如果你能从一些新的方法开始,那将更好地感谢Jason的意见。根据当前情况,对于以下条件,我们可以使用if/then:-如果LandMark1=“USA”和Sector=“07”,则需要使用LandMark2,但我可以将其放置在LandMarks模式中,而不是将其放置在address schema中吗?JSON模式无法查找JSON树。因此,您需要将
    放置在足够高的位置,以便它可以“查看”需要设置约束的所有元素。如果它在“Landmarks”模式中,
    If
    将无法设置“Sector=07”约束。我试图将if-else条件置于地址级别,但它仍然不起作用。我怀疑语法可能是错误的。因此,如果您可以共享我需要在地址级别设置的if-then条件,这将非常有用。注释不是共享模式的好地方。我认为对我来说,最好的帮助方式是,如果你提出一个新问题,然后发表你已经尝试过但不适合你的东西。嗨,杰森。上传了一个新问题,请帮助我。
    "if": { ... schema from above ... },
    "then": { "required": ["Sector"] }