Почему эта простая схема Json неверна в NJsonchema? - PullRequest
0 голосов
/ 12 ноября 2018

Я тестирую NJsonschema и обнаружил, что следующая простая схема Json недопустима.

Исходная схема представляет собой большую схему, содержащую множество определений, одно из определений (ResourceList) представляет собой список, содержащий множество других определений, но для упрощения вопроса я упростил всю схему, как показано ниже: jsonschemastr, в котором содержит только 4 определения.

Проблема в том, что если схема определяет тип (ValueSet или CodeSystem), который также содержится в ResourceList, вся схема будет недействительной, но не проблема, если она определяет 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);
}
...