在尝试使用 Aeson JSON 库的同时玩弄 github gist API。我遇到了生成的 ToJSON 实例的问题,我不知道如何解决它。
我需要在里面包含一个值,并且与该值关联的键也需要是一个值,而不是预定义的键名。它更容易显示。所需的输出是,
{
"public": true,
"description": "Something..",
"files": {"This Thing.md": {"content": "Here we go!"}}
}
文件名的值包含内容,但目前我得到了,
{
"public": true,
"description": "Something..",
"files": {"filename": "This Thing.md", "content": "Here we go!"}
}
这不是我真正需要的。当前的代码是,
{-# LANGUAGE OverloadedStrings, DeriveGeneric #-}
import Data.Text (Text)
import Data.Aeson
import GHC.Generics
data GistContent = GistContent
{ filename :: Text
, content :: Text
} deriving (Show, Generic)
instance ToJSON GistContent
data Gist = Gist
{ description :: Text
, public :: Bool
, files :: GistContent
} deriving (Show, Generic)
instance ToJSON Gist
在有可能的假设下,我的数据结构需要如何查看才能获得所需的输出?..如果使用泛型无法做到这一点,我是如何使用 ToJSON 实例解决的(我不太清楚那里的结构也没有)?