Json.net Newtonsoft.Json.Schema支持字符串或null

Json.net Newtonsoft.Json.Schema支持字符串或null,json.net,jsonschema,Json.net,Jsonschema,我正在使用Json.Net 7.0.1 我有一个模式,可以很好地处理如下属性的定义: "phone":{"type":"string", "required":false} 但是,当我尝试这样做时: "phone":{"type":["string", "null"], "required":false} 我得到一个异常,类型无法将数组转换为可为null的类型。我可以看到这是因为类型正在转换为C#中的枚举值 如何使用Newtonsoft.Json.Schema支持null或字符串 还有一件事

我正在使用Json.Net 7.0.1 我有一个模式,可以很好地处理如下属性的定义:

"phone":{"type":"string", "required":false}
但是,当我尝试这样做时:

"phone":{"type":["string", "null"], "required":false}
我得到一个异常,类型无法将数组转换为可为null的类型。我可以看到这是因为类型正在转换为C#中的枚举值

如何使用Newtonsoft.Json.Schema支持null或字符串


还有一件事:我尝试了Json.NET模式包,但它不会运行。尽管它说它需要Netwonsoft.Json>=6.0.8,但在运行时它会抛出一个错误,即如果我使用新的JSchema,它将找不到Json.Net库。

我得到了我的答案,而不是我喜欢的答案:因为它是一个枚举,所以我查看了它,值是:public enum JsonSchemaType{None=0,String=1,Float=2,Integer=4,Boolean=8,Object=16,Array=32,Null=64,Any=127,}我注意到这是一个位标志枚举,Any是127(所有其他的),所以我尝试了数字值65:“type”:65,这很有效。它不像[“String”,“Null”]那么容易读取,但至少它可以工作。是否尝试使用逗号分隔的字符串值格式,如
“type”:“string,Null”
(无数组括号)?我猜它可能会起作用,因为这是设置了多个标志的标志枚举值的字符串表示形式。我不知道使用了什么库,但为什么要在非必需的属性上允许
null
?删除该属性比将其设置为
null
要干净得多。谢谢Brian,我会尝试一下,我是JSON a新手nd不知道这是表示位标志枚举的方式。Fiddur,我无法控制输入:,“属性”:,“属性”:null。我不希望验证器使任何一个都失败。我认为这很正常。如果我允许修补,null和empty非常有用。如果它不在那里,我不会覆盖该属性,如果它为null或empty(即属性在那里没有值),我会用null或empty覆盖。