你知道任何哈斯克爾庫數據驗證了記錄
- 提供了一些簡化備案驗證和(!)
- 作品與埃宋的?
我知道我可以寫一些構造函數,但是我想在不重新發明輪子的情況下擦除樣板。
我所尋找的是以下幾點:
我想定義每個領域的「合同」。例如:
data Person = Person {
age :: Integer
,email :: Text
,projects :: [Project]}
現在,我想確保我解析JSON到記錄後,以下成立:
- 年齡在[0,天道酬勤)
- 電子郵件匹配「^[A-Z0-9 ._%+ - ] + @ [A-Z0-9 .-] + [AZ] {2,6-} $」
- 項目包含至少2個項目
如果我嘗試使用ag創建記錄e < 0,我會收到一條錯誤消息,例如「age = 0 no in [0,inf)」。我認爲這樣的應該可以通過模板Haskell派生。
此外,我想將它集成到解析器階段。因此,而不是讓這樣的錯誤消息「預期時的積分,遇到字符串代替」,我想獲得的錯誤消息
- 顯示錯誤(不知道的位置,如果這是可能的attoparsec )
- 描述錯誤。
請參閱「智能構造函數」 – luqui
@luqui:Thx-有此想法,但我還沒有找到一種簡單的方法將智能構造函數集成到Aeson中 - 另外,我不確定如何將它與鏡頭。 – Chronos
似乎讓構造函數返回一個Monad幫助 - 仍然留下的問題是,Aeson不會報告發生錯誤的位置。謝謝,盧奎,提示。 – Chronos