2014-10-22 7 views
2

내가 JJV 검사기 (A JSON 스키마도 구현)를 사용하여,NaN이 json-schema 기본 유형이 아닌 이유는 무엇입니까? 내 <a href="http://json-schema.org" rel="nofollow">json-schema</a>에서

이제
"units":"number" 

같은 속성을 정의, 내 데이터 모델에 NaN의 값을 발생합니다. 나는이 같은 사용자 정의 강제 변환 기능을하는 대신이 "units":["number","NaN"] 같은 일을하고 싶습니다 :

env.addTypeCoercion('number', function(x){ 
       if(isNaN(x)) 
       { 
        return 0 
       } 
       return x; 
      }); 

버전 4의 JSON schema primitive types가 NaN를 포함하지 않는 것 같다. 어떻게 재산을 숫자 또는 NaN으로 표현할 수있는 스키마를 고안 할 수 있습니까?

+0

예, 숫자로 해석됩니다. 그럴만한 이유가있는 것 같습니다. – PHPglue

+0

편집 후 나는 질문을 근본적으로 생각할 이유가 없다. – jruizaranguren

답변

3

The definition of JSON은 NaN 값이 허용되지 않습니다.. 따라서 NaN을 허용 한 JSON 구조의 스키마는 이 JSON이 아닌 것을 허용합니다.

JSON.stringify에 NaN 값이 포함 된 JSON을 만들면 null으로 바뀝니다.

+0

아, JJV 구현을 살펴보면 NaN을 제외하고 명시 적으로 의도 한 것처럼 보입니다. (x === 'number'&& x === x) }''number ': function (x) { //! isNaN (x) 대신에 x === x를 사용하여 반환 typeof 그래서 나는'|| typeof isNaN (x); – FlavorScape

관련 문제