2014-10-22 6 views
2

В моих json-schema я определил собственность какПочему NaN не является примитивным типом json-schema?

"units":"number" 

Теперь, используя JJV валидатор (а JSON-схему implimentation), я сталкиваюсь в моей модели данных значения, которое является NaN. Я хотел бы сделать что-то вроде этого "units":["number","NaN"] вместо того, чтобы делать пользовательские функции принуждения, как это:

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

JSON schema primitive types в 4-й версии, похоже, не включают в себя NaN. Как я могу разработать схему, которая позволяет мне выразить свойство как число или NaN?

+0

Да, я думаю, он разрешает номер. Это кажется достаточной причиной. – PHPglue

+0

После редактирования я не вижу причины рассматривать вопрос в первую очередь мнением. – jruizaranguren

ответ

3

The definition of JSONне допускает значений NaN. Поэтому любая схема для структур JSON, которая разрешала NaN, позволяла бы вещам, которые не JSON.

Если вы создаете JSON с использованием JSON.stringify, который включает в себя значение NaN, он будет заменен на null.

+0

Ах, глядя на реализацию JJV, похоже, что они явно предназначены для того, чтобы не включать NaN. ''number': function (x) { // Используйте x === x вместо! isNaN (x) для скорости return typeof (x === 'number' && x === x) },' поэтому я добавил '|| typeof isNaN (x); ' – FlavorScape

Смежные вопросы