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

Custom record to json key conversion in Haskell using Aeson library

以下代码对我不起作用。谁能解释如何解决和避免 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.

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

中找到它