如何为[Text]创建ToJSON / FromJSON实例

时间:2014-10-21 14:04:44

标签: haskell

我有一个文本列表:

foo :: [Text]
foo = ["Foo", "Bar"]

我使用scotty的json函数发送回复。

post "/generate" $ do
     json foo

我得到无实例错误:

 No instance for (ToJSON Text) arising from a use of ‘json’

当我添加:

instance ToJSON Text  where
        toJSON = String
instance FromJSON Text where
        parseJSON = withText "Text" pure

我明白了:

Couldn't match type ‘text-1.1.1.3:Data.Text.Internal.Text’
              with ‘Text’
NB: ‘text-1.1.1.3:Data.Text.Internal.Text’
      is defined in ‘Data.Text.Internal’ in package ‘text-1.1.1.3’
    ‘Text’
      is defined in ‘Data.Text.Internal.Lazy’ in package ‘text-1.2.0.0’
Expected type: Text -> Value
  Actual type: text-1.1.1.3:Data.Text.Internal.Text -> Value
In the expression: String
In an equation for ‘toJSON’: toJSON = String

好像我安装了多个版本的text- *,而且我已经卡住了。

1 个答案:

答案 0 :(得分:0)

您正在尝试使用与text-1.1.1.3链接的aeson来处理text-1.2.0.0中的值(很可能是您最后安装的文本版本)。

你可能想要重新安装aeson以及任何破坏的软件包。

另一种方法是使用cabal构建项目并使用.cabal文件中绑定的版本来强制使用text-1.1.1.3,但这几乎肯定你是什么的想做。