[英]FluentValidation on JObject property to validate MustBeSafeJson()
JObject 屬性MyCustomField將具有 json 數據。 我需要使用MustBeSafeJson()和MaximumLength(500)進行驗證。 我不確定什么是正確的語法。 我嘗試了以下方法,但對於任何語法它都會引發相同的錯誤。 這是一個 ASP.Net Core 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();
}
}
要查看您的驗證結果,只需檢查 Errors 屬性result.Errors
。 如果result.IsValid
返回false,就會有東西
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.