2017-12-01 12 views
0

play-json-schema-validator을 사용 중이며 API의 JSON 응답 스키마를 확인하기 위해 스칼라와의 통합 테스트를 설정하려고합니다.json schema validator를 사용하여 null 입력 가능 유형을 확인하는 방법은 무엇입니까?

응답의 특정 필드는 Null을 허용하므로이를 확인하고 싶습니다. 따라서 일부 필드는 문자열 또는 null이 될 수 있지만 숫자가 될 수는 없습니다.

둘러보기 its playground 각 개체의 name 속성이 문자열 또는 null 인 개체 배열의 유효성을 검사하고 싶습니다.

{ 
    "$schema": "http://json-schema.org/draft-04/schema#", 
    "title": "Product set", 
    "type": "array", 
    "items": { 
    "title": "Product", 
    "type": "object", 
    "properties": { 
     "name": { 
     "type": ["string", null] 
     } 
    } 
    } 
} 

을하지만 그것이 문자열과 null의 경우 유효성을 검사하지만, 지금은 숫자 가양 얻을 :

나는이 스키마를 내놓았다. 나는이 JSON에 대한 오류를 기대하고 있었다, 그러나 그것의 유효성을 검사 :

[ 
    { 
    "name": "Red anger" 
    }, 
    { 
    "name": null 
    }, 
    { 
    "name": 13 
    } 
] 

어떻게 널 (NULL) 사용하여 스키마 검증과 같은 유형의 필드를 선언?

답변

0

Enquote 스키마에서 널 (null) :

"type": ["string", "null"] 

당신은 json schema validation documentation에서 그것에 대해 읽을 수있는, 즉 :

6.1. 모든 인스턴스 유형의 유효성 검사 키워드

6.1.1. type

이 키워드의 값은 문자열이나 배열이어야합니다. 배열 인 경우 배열의 요소는 문자열이어야하며 은 고유해야합니다.

문자열 값은 여섯 개 개의 기본 유형들 중 하나 ("NULL" "부울", "개체", "배열", "숫자", 또는 "문자열"), 또는 임의의 일치 "정수" 이어야 분수가 0 인 숫자입니다.

인스턴스는이 키워드에 대해 나열된 세트 중 하나에 인스턴스가있는 경우에만 유효성을 검사합니다.

1

배열 만 한 시점에 유형에 동의하지 않는 스키마의 유형 속성 : "문자열을"...과 같이 당신은 지적, 유형이 "널 (null)"해야 문자열 그래서 대신 널 (null) => "널 (null)"의

당신이 oneOf

실행 하는가를 사용할 필요가 하나의 필드에 여러 유형을 확인하려면, 여기 allOf

는 예를 들어 w이다 입력을 사용하여 orking하기

{ 
    "$schema": "http://json-schema.org/draft-04/schema#", 
    "title": "Product set", 
    "type": "array", 
    "items": { 
    "title": "Product", 
    "type": "object", 
    "properties": { 
     "name": { 
     "anyOf": [ 
      {"type":"string"}, 
      {"type":"null"}, 
      {"type":"number"} 
     ] 
     } 
    } 
    } 
}