使用Aeson库在Haskell中自定义记录到json密钥转换

时间:2017-11-26 06:57:35

标签: json haskell aeson

下面的代码对我不起作用。任何人都可以解释如何解决并避免在Haskell中出现以下错误

{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE DeriveGeneric #-}

module Test where

import GHC.Generics
import Data.Aeson.Types
import Data.Aeson

data Person = Person { personId :: Int , personName :: String} deriving (Show, Generic)

instance ToJSON Person where
    toJson p = [
            "id" .= personId p,
            "name" .= personName p
        ]

instance FromJSON Person

我收到了以下错误。我无法在这里找出问题。

Prelude> :load src/User/Test
[1 of 1] Compiling Test             ( src\User\Test.hs, interpreted )

src\User\Test.hs:13:5: error:
    `toJson' is not a (visible) method of class `ToJSON'
Failed, modules loaded: none.

1 个答案:

答案 0 :(得分:1)

方法的名称为toJSON,而不是toJson。标识符在Haskell中区分大小写。您可以在aeson documentation for the ToJSON class

中找到