gpt4 book ai didi

json - Haskell Data.Decimal 作为 Aeson 类型

转载 作者:行者123 更新时间:2023-12-01 06:05:28 25 4
gpt4 key购买 nike

是否可以解析 Data.Decimal从 JSON 使用 Aeson 包?

假设我有以下 JSON:

{
"foo": 5.231,
"bar": "smth"
}

以及以下记录类型:
data test { foo :: Data.Decimal
, bar :: String } deriving Generic


instance FromJSON test
instance ToJSON test

如果不是 Data.Decimal,这会起作用值“foo”。

据我所知,我需要手动创建一个 FromJSONToJSON (用于转换回 JSON)Data.Decimal 的实例,因为它不是从 Generic 派生的。我怎样才能做到这一点?

提前致谢。

最佳答案

我知道这是一个旧线程,但可能会帮助某人。这是我将十进制转换为/从 json 的方法(我从一堆其他代码中组装了这段代码,我现在没有源代码):

instance A.ToJSON (DecimalRaw Integer) where
-- maybe this is not the best, but it works
toJSON d = A.toJSON $ show d

instance A.FromJSON (DecimalRaw Integer) where
parseJSON = A.withText "Decimal" (go . (read :: String -> [(DecimalRaw Integer, String)]) . T.unpack)
where
go [(v, [])] = return v
go (_ : xs) = go xs
go _ = fail "Could not parse number"

关于json - Haskell Data.Decimal 作为 Aeson 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40331851/

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