2014-07-17 57 views
1

驗證包含日期字段的JavaScript對象的最佳做法是什麼?驗證包含日期的Javascript對象

還有像tv4這樣的JSON驗證器可以validate the format of strings

但是,我們的業務邏輯與實例JavaScript-Date的日期一起工作,並且這些對象不會被驗證。

我們當前的過程是

  1. 讀取使用date reviver
  2. 過程與業務邏輯對象業務對象與JSON.parse()來,然後用
  3. 驗證將對象轉換至JSON與a date stringifier
  4. 使用JSON.parse()返回字符串,現在不需要修改
  5. 驗證此對象

有沒有更好的方法來驗證反對步驟3,4和5? 優先驗證業務對象直接?

實施例:

JSON字符串

{ 
    "birth": "1994-03-17" 
} 

架構爲JSON字符串

{ 
    type: 'string', 
    format: 'date-time' 
} 

業務對象

{ 
    birth: new Date("1994-03-17") 
} 
+0

如果這個問題(BusinessObject的提及['birth'] instanceof Date) – kennebec

+0

是的,驗證者應該這樣做。除了驗證其他非日期字段。 –

回答

2

如果您使用的是TV4庫,你可以這樣做:

tv4.addFormat('date-time', function (data) { 
    if (data instaceof Date) return null; 
    else return "not a valid date"; 
}); 

和你的驗證應該是:

{ 
    type: "object", 
    format: "date-time" 
} 

這種方法在您發佈(json schema date-time does not check correctly

+0

哦,爲什麼我沒有發現將類型更改爲對象的技巧!讓我檢查我們的代碼庫... –