我有类似
的类型data D = D { x :: Maybe X }
我需要将其序列化为JSON,例如:{"x": {XXX} }
,其中XXX
是X
的代表x
只是X 宾语。好的,但是当 Nothing 时,它必须是{}
,即:{"x": {}}
。如何为ToJSON
实施D
个实例?转换为String
是错误的,我得"{}"
而不是{}
答案 0 :(得分:2)
如果我没有误会,我想你想要这个:
instance ToJSON D where
toJSON (D maybeX) =
object ["x" .= (case maybeX of
Nothing -> mempty
Just x -> toJSON x)]
而且,正如您在评论中指出的那样,您可以将该内在表达式称为maybe (Object mempty) toJSON maybeX :: Value
。