lam*_*das 3 json haskell aeson
我很惊讶地知道Aeson编码()为空阵列.这种行为背后的原因是什么?我觉得null会更自然,我错了吗?
*Main> encode ()
"[]"
Run Code Online (Sandbox Code Playgroud)
该ToJSON例如()被定义为:
instance ToJSON () where
toJSON _ = emptyArray
{-# INLINE toJSON #-}
Run Code Online (Sandbox Code Playgroud)
因为通常,元组被编码为数组:
instance (ToJSON a, ToJSON b) => ToJSON (a,b) where
toJSON (a,b) = Array $ V.create $ do
mv <- VM.unsafeNew 2
VM.unsafeWrite mv 0 (toJSON a)
VM.unsafeWrite mv 1 (toJSON b)
return mv
Run Code Online (Sandbox Code Playgroud)
(我认为null没有多大意义;通常null表示缺少值可能存在的值,所以在Haskell中你会使用Nothing.实际上,encode Nothing返回"null".()只是一个0元组,这个实例与其他实例更一致元组).
| 归档时间: |
|
| 查看次数: |
291 次 |
| 最近记录: |