你知道任何哈斯克尔库数据验证了记录
- 提供了一些简化备案验证和(!)
- 作品与埃宋的?
我知道我可以写一些构造函数,但是我想在不重新发明轮子的情况下擦除样板。
我所寻找的是以下几点:
我想定义每个领域的“合同”。例如:
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