2017-05-24 3 views
0

json shema를 사용하여 C# api에서 들어오는 objet 매개 변수의 유효성을 검사하려고합니다.C#에서 json 스키마를 사용하여 개체 유효성 검사

void BuildSqlQueryFromSegment(JoinDefinition jsonDef); 

JsonDefinition이 속성의 많은 복잡한 객체이다 여기 내 API를 프로토입니다. 속성 값이 서로 의존하기 때문에 Required, Min, Max 같은 간단한 validateur 특성을 여기에서 사용할 수 없습니다.

하나의 해결책은 유형의 개체 대신 문자열을 전달하는 것입니다 :

void BuildSqlQueryFromSegment(string jsonDef) { 
    // Check shema here, using Json.NET Schema 
    // if ok, deserialize and get the JsonDefition object instance 
} 

나는 아주 쉽게이 implment 수 있어요,하지만 난이 솔루션이 똑똑하지 찾을 수 있습니다.

void BuildSqlQueryFromSegment([SchemaValidation('MySchemaResourceHere')] JoinDefinition jsonDef); 

속성의이 종류가 존재 하는가 :

내가 무엇을 찾고은 다음과 같이인가? 그렇지 않다면 어떻게 구현할 수 있습니까? 어떻게 들어오는 응답 json 문자열 스키마를 확인하려면 행동 할 수 있습니까?

도움 주셔서 감사합니다.

+0

newtonsoft의 json.net 라이브러리에는 스키마 유효성 검사기가 있지만 무료는 아닙니다. http://www.newtonsoft.com/jsonschema에 대한 자세한 정보가있을 수 있습니다. 그래도 나는 그것을 사용한 적이 없기 때문에 그것이 당신의 필요를 충족 시킬지 모르겠습니다. – mcy

답변

0

먼저 당신은 문자열에서 Jsonschema를 얻을

 JObject jObject= JObject.Parse(JsonString); 

     bool valid = jObject.IsValid(Objschema); 

클래스 JSON 스키마에서 JsonString 스키마 경기는 다른 허위 사실 반환하는 경우

 JsonSchemaGenerator schemaGenerator = new JsonSchemaGenerator{ }; 
     var o = new JoinDefinition(); 
     JsonSchema Objschema = schemaGenerator.Generate(o.GetType()); 

보다 JoinDefinition 클래스에서 JsonSchema를 작성해야

아래 네임 스페이스를 사용해야합니다.

 using Newtonsoft.Json; 
     using Newtonsoft.Json.Linq; 
     using Newtonsoft.Json.Schema; 
+0

외부 키워드로 오류를 catch 할 수 있습니다. IList errorMessages; bool valid = jObject.IsValid (스키마, out Objschema); –

+0

답변 해 주셔서 감사합니다. 나는이 사실을 이미 알고 있었다. 나의 질문은 문자열에서 시작하는 것을 피하기 위해 속성에이 코드를 래핑하는 것이었다. 위의 코드를 삽입 할 수있는 속성을 어떻게 구현할 수 있습니까? –