我很惊讶地知道Aeson编码()
为空数组。这种行为背后的原因是什么?我认为null
会更自然,我错了吗?
*Main> encode ()
"[]"
的ToJSON
实例()
定义为:
instance ToJSON () where
toJSON _ = emptyArray
{-# INLINE toJSON #-}
因为通常,元组被编码为数组:
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
(我认为null
这没有多大意义;通常null
表示可能存在一个值的缺乏价值,因此在Haskell中,您将使用Nothing
。实际上,encode Nothing
return "null"
。()
只是一个0元组,并且该实例与其他实例更加一致元组。)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句