C# C语言中的JSON模式验证程序#
我有一个用于Json验证的类C# C语言中的JSON模式验证程序#,c#,asp.net,asp.net-mvc,asp.net-core,asp.net-mvc-4,C#,Asp.net,Asp.net Mvc,Asp.net Core,Asp.net Mvc 4,我有一个用于Json验证的类 public class RootObject { [JsonProperty("Key", Required = Required.Always)] public string Key { get; set; } [JsonProperty("Value", Required = Required.Always)] public string Value { get; set; }
public class RootObject
{
[JsonProperty("Key", Required = Required.Always)]
public string Key { get; set; }
[JsonProperty("Value", Required = Required.Always)]
public string Value { get; set; }
[JsonProperty("Type", Required = Required.Always)]
public string Type { get; set; }
}
我的要求是根据我的AttributeValue
验证JSON(格式如下)
我的代码是
if(objProductInfo.Products.AttributeValue!=null)
{
var生成器=新的JSchemaGenerator();
JSchema schema=generator.Generate(typeof(List));
JArray jsonArray=JArray.Parse(objProductInfo.Products.AttributeValue);
bool-isValidSchema=jsonArray.IsValid(模式);
如果(!isValidSchema)
{
objProductInfo.Products.AttributeValue=null;
}
}
这里验证了大多数情况,但问题是如果
[{"Title":"Color","Key":"Color","Value":"Pink","Type":"Simple"}]
我面临两个问题
Value
没有引号
默认情况下,架构接受其他属性: 您可以在架构实例中覆盖此设置:
publicstaticvoid notallowaditional(JSchema模式)
{
schema.AllowAdditionalProperties=false;
schema.allowaditionalitems=false;
foreach(schema.Items中的var子级)
{
不允许附加财产(儿童);
}
}
我已将AllowAdditionalProperty和AllowAdditionalItems设置为false,但它仍然是不固定的。您需要在所有架构树中设置AllowAdditional*,如示例方法NotAllowAdditional
whenforeach(schema.Items中的var child)
。
[{"Title":"Color","Key":"Color","Value":"Pink","Type":"Simple"}]