gpt4 book ai didi

json - 为什么 Aeson 将 () 编码为空数组?

转载 作者:行者123 更新时间:2023-12-05 00:31:52 26 4
gpt4 key购买 nike

我很惊讶 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 表示缺乏值(value),而可能是一个,所以在Haskell 你会使用 Nothing。事实上,encode Nothing 返回 "null"() 只是一个0元组,这个实例与其他元组更一致。)

关于json - 为什么 Aeson 将 () 编码为空数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19477977/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com