为什么这个简单的Json模式在NJsonchema中无效?

时间:2018-11-11 22:31:47

标签: c# json schema njsonschema

我正在测试NJsonschema,发现遵循简单的Json模式无效。

原始模式是一个包含许多定义的大模式,其中一个定义(ResourceList)是一个包含许多其他定义的列表,但是为了简化问题,我将整个模式简化如下jsonschemastr,其中仅包含4个定义。

问题是,如果架构定义了ResourceList中也包含的类型(ValueSet或CodeSystem),则整个架构将无效,但是如果定义ValueSet1则没有问题,  为什么?顺便说一句,我的架构是有效的,并已使用其他Json架构工具进行了检查。

[Fact]
public async Task When_ref_is_nested_then_it_should_be_resolved()
{
    /// Arrange
    var jsonschemastr = @"{
    ""$schema"": ""http://json-schema.org/draft-04/schema#"",
    ""$ref"": ""#/definitions/ValueSet"", "//<=== Could not resolve this path, but it is valid with ValueSet1!!!
    +@"""definitions"": {
        ""ResourceList"": {
            ""oneOf"": [
                {
                    ""properties"": {}
                },
                {
                    ""$ref"": ""#/definitions/CodeSystem""
                },
                {
                    ""$ref"": ""#/definitions/ValueSet""
                }
            ]
        },
        ""CodeSystem"": {

        },
        ""ValueSet"": {
        },
        ""ValueSet1"": {
        }
      }
    }";

    var schema = await JsonSchema4.FromJsonAsync(jsonschemastr);

    /// Assert
    var jsonOutput = schema.ToJson();
    Assert.NotNull(jsonOutput);
}

0 个答案:

没有答案