jul*_*les 0 json haskell aeson
我有以下形式的JSON日期数据:
{"date": "2015-04-12"}
Run Code Online (Sandbox Code Playgroud)
和相应的haskell类型:
data Date = Date {
year :: Int
, month :: Int
, day :: Int
}
Run Code Online (Sandbox Code Playgroud)
如何为Aeson库编写自定义FromJSON和ToJSON函数
?由于格式化,派生实例不起作用.
为什么重新发明轮子?你Date在time包中调用的内容有一个半标准的表示- 它被称为Day.它变得更好:不仅相同的包甚至为您提供了Day从您拥有的格式进行解析的实用程序,甚至可以导出这些实用程序aeson.是的,已经有ToJSON和FromJSON实例中aeson为Day:
ghci> :set -XOverloadedStrings
ghci> import Data.Time.Calendar
ghci> import Data.Aeson
ghci> fromJSON "2015-04-12" :: Result Day
Success 2015-04-12
ghci> toJSON (fromGregorian 2015 4 12)
String "2015-04-12"
Run Code Online (Sandbox Code Playgroud)
如果您真的想要提取日期,月份和年份,您可以随时使用toGregorian :: Day -> (Integer, Int, Int).坚持标准抽象可能是一个很好的长期选择.
| 归档时间: |
|
| 查看次数: |
265 次 |
| 最近记录: |