【发布时间】:2014-01-26 01:37:12
【问题描述】:
在尝试使用 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 实例解决的(我可以'也不太清楚那里的结构)?
【问题讨论】: