gpt4 book ai didi

json - 如何避免为 Data.Tree 创建孤立的 FromJSON 实例

转载 作者:行者123 更新时间:2023-12-04 02:23:09 25 4
gpt4 key购买 nike

我正在使用 aeson包裹。我有一个使用 Data.Tree 的数据类型在其声明中。像下面这样,只是更复杂:

 data Foo = Foo {
bat :: Text
, xux :: Maybe Text
, tri :: Tree Text
}

我想使用 Data.Aeson.TH生成 FromJSON这种类型的实例。
$(deriveJSON defaultOptions ''Foo)

但是 Data.Tree没有 FromJSON 的标准实例,这意味着我需要声明一个孤儿实例。

有什么方法可以避免创建该孤立实例,同时仍然可以使用 deriveJSON ?

最佳答案

为了使实例是规范的(即不是孤立的),它需要在与类型构造函数( Data.Tree )或类声明( Data.Aeson.Types )相同的模块中定义。因此,定义非孤立实例的唯一方法是 fork aeson (因为 aeson 取决于容器)。

我会推荐 filing a ticketaeson ,或者可能是拉取请求,以将其添加到上游。在那之前,如果您不打算分发代码,那么定义一个孤立实例应该不会造成太大的麻烦。如果您正在编写要发布的代码,最安全的解决方案是围绕 Tree 创建一个新类型包装器。 ,然后制作 FromJSON新类型的实例。

关于json - 如何避免为 Data.Tree 创建孤立的 FromJSON 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19336569/

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