JObject 属性 上的 FluentValidation 以验证 MustBeSafeJson()
FluentValidation on JObject property to validate MustBeSafeJson()
JObject 属性 MyCustomField 将有 json 数据。我需要使用 MustBeSafeJson() 和 MaximumLength(500) 进行验证。我不确定什么是正确的语法。我尝试了以下操作,但它对任何语法都会抛出相同的错误。
这是一个 ASP.Net 核心 Web Api 应用程序。
public class MyClass
{
public int Id { get; set; }
public JObject MyCustomField { get; set; }
}
RuleFor(x => x.MyCustomField). //does not show any of the validation choices like MustBeSafeJson()
尝试过
RuleFor(x => x.MyCustomField.ToSerializedString()).MustBeSafeJson();
RuleFor(x => x.MyCustomField.ToString()).MustBeSafeJson();
错误信息
Error
"errorModel:"{
"value":{
"":[
"'' cannot contain certain symbol characters."
]
}
}
我没有清楚地理解MustBeSafeJson()
应该做什么。但是您可以使用以下代码在 JObject
上编写自己的验证。
public MyClass_Validation()
{
RuleFor(x => x.MyCustomField).Must(x => SAFE_JSON(x, 500));
}
private bool SAFE_JSON(JObject arg,int maxSize = 1024)
{
///ValidationLogic goes here
}
我如何在评论中告诉你,你应该将 json 字符串传递给验证器或在其中序列化它,请遵循完整示例:
public class Program
{
public static void Main()
{
var myClass = new MyClass
{
MyCustomField = new JObject
{
{ "FieldA", "A" },
{ "FieldB", "B" }
}
};
var result = new Validator().Validate(myClass);
}
}
public class MyClass
{
public int Id { get; set; }
public JObject MyCustomField { get; set; }
}
public class Validator : AbstractValidator<MyClass>
{
public Validator()
{
RuleFor(x => x.MyCustomField).Must(MustBeSafeJson);
}
private bool MustBeSafeJson(JObject arg)
{
var jsonString = JsonConvert.SerializeObject(arg);
return RunValidatingRules(jsonString);
}
private bool RunValidatingRules(string jsonString)
{
//execute your rules
throw new NotImplementedException();
}
}
要查看验证结果,只需检查错误 属性 result.Errors
。如果result.IsValid
returns false,就会有东西
JObject 属性 MyCustomField 将有 json 数据。我需要使用 MustBeSafeJson() 和 MaximumLength(500) 进行验证。我不确定什么是正确的语法。我尝试了以下操作,但它对任何语法都会抛出相同的错误。 这是一个 ASP.Net 核心 Web Api 应用程序。
public class MyClass
{
public int Id { get; set; }
public JObject MyCustomField { get; set; }
}
RuleFor(x => x.MyCustomField). //does not show any of the validation choices like MustBeSafeJson()
尝试过
RuleFor(x => x.MyCustomField.ToSerializedString()).MustBeSafeJson();
RuleFor(x => x.MyCustomField.ToString()).MustBeSafeJson();
错误信息
Error
"errorModel:"{
"value":{
"":[
"'' cannot contain certain symbol characters."
]
}
}
我没有清楚地理解MustBeSafeJson()
应该做什么。但是您可以使用以下代码在 JObject
上编写自己的验证。
public MyClass_Validation()
{
RuleFor(x => x.MyCustomField).Must(x => SAFE_JSON(x, 500));
}
private bool SAFE_JSON(JObject arg,int maxSize = 1024)
{
///ValidationLogic goes here
}
我如何在评论中告诉你,你应该将 json 字符串传递给验证器或在其中序列化它,请遵循完整示例:
public class Program
{
public static void Main()
{
var myClass = new MyClass
{
MyCustomField = new JObject
{
{ "FieldA", "A" },
{ "FieldB", "B" }
}
};
var result = new Validator().Validate(myClass);
}
}
public class MyClass
{
public int Id { get; set; }
public JObject MyCustomField { get; set; }
}
public class Validator : AbstractValidator<MyClass>
{
public Validator()
{
RuleFor(x => x.MyCustomField).Must(MustBeSafeJson);
}
private bool MustBeSafeJson(JObject arg)
{
var jsonString = JsonConvert.SerializeObject(arg);
return RunValidatingRules(jsonString);
}
private bool RunValidatingRules(string jsonString)
{
//execute your rules
throw new NotImplementedException();
}
}
要查看验证结果,只需检查错误 属性 result.Errors
。如果result.IsValid
returns false,就会有东西