使用JSchemaGenerator创建不可为空的数组类型

时间:2015-02-19 01:26:34

标签: c# json c#-4.0 json.net jsonschema

我正在使用Newtonsoft.Json.schema v1.0.6,我正在尝试为自定义类型生成JSchema,该类型具有与此类似的数组属性:

public class MyClass {
    public List<MyChild> Children { get; set; }
}
public class MyChild {
    public string MyProperty { get; set; }
}

默认JSchemaGenerator生成与此类似的JSchema

{
    "type": "object",
    "properties": {
        "MyChildren": {
            "type": "array",
            "items": {
                "type": [
                    "object",
                    "null"
                ],
                ...
            }
        }
    },
    ...
}

我不想接受MyChildren数组中的空项。我尝试添加[JsonProperty(Required = Required.Always)]属性,但它只需要MyChildren属性本身,我无法将属性添加到MyChild类。

我想我必须实现自定义JSchemaGenerationProvider,但JSchema.Items属性是只读的。

如何为具有不应接受空值的数组属性的对象生成JSON模式?

1 个答案:

答案 0 :(得分:0)

JSchema.Items是只读的,但其中的架构可以修改。只需将其类型设置为JSchemaType.String