Json.NET Schema .NET 라이브러리를 사용하고 있습니다.Json.NET 스키마 : 사용자 정의 JSON 유효성 검사 규칙을 사용할 때 사용자 정의 오류 유형
JSchema schema = JSchema.Parse(@"{
'type': 'object',
'required' : ['name'],
'properties': {
'name': {'type':'string'},
'roles': {'type': 'array'}
}
}");
지금 내가 JSON 개체 (나는 name
속성을 정의하고 있지 않다주의)을 검증하고 있습니다 :
의 나는 같은 JSON 스키마를 정의한다고 가정 해 봅시다
JObject user = JObject.Parse(@"{
'roles': ['Developer', 'Administrator']
}");
user.IsValid(schema, out IList<ValidationError> errors);
Debug.WriteLine(errors[0].ErrorType);
마지막 행의 출력은 Required
이됩니다. 이렇게하면 런타임에 특정 오류 유형을 알 수 있으며 프로그래밍 방식으로이 오류 유형에 따라 결정을 내릴 수 있습니다.
내 문제는 사용자 지정 유효성 검사 규칙을 사용하여 작업 할 때 사용자 지정 오류 유형을 정의 할 수 없다는 것입니다.
사용자 지정 유효성 검사 규칙 정의 :
class MyCustomValidator : JsonValidator
{
public override void Validate(JToken value, JsonValidatorContext context)
{
var s = value.ToString();
if (s != "valid")
{
context.RaiseError($"Text '{s}' is not valid.");
}
}
public override bool CanValidate(JSchema schema)
{
return schema.Type == JSchemaType.String;
}
}
및 사용자 지정 유효성 검사 규칙을 사용하여 유효성 검사를 실행 그래서 내 모든 사용자 지정 유효성 검사기는 다음 예에서와 같이, Validator
에 동일 ErrorType
속성 오류 인스턴스를 생성합니다 :
JSchema schema = JSchema.Parse(@"{
'type': 'object',
'required' : ['name'],
'properties': {
'name': {'type':'string'},
'roles': {'type': 'array'}
}
}");
JObject user = JObject.Parse(@"{
'name': 'Ivalid',
'roles': ['Developer', 'Administrator']
}");
schema.Validators.Add(new MyCustomValidator()); // adding custom validation rule
user.IsValid(schema, out IList<ValidationError> errors);
Debug.WriteLine(errors[0].ErrorType);
출력은 Validator
입니다.
내 질문은 :이 경우에 대한 해결 방법이 있습니까? 내 사용자 정의 유효성 검사 규칙에 의해 생성 된 오류를 다른 표준 오류 유형과 구분할 수 있습니까?
감사합니다.