我有一些类似
data D = D { x :: Maybe X }
我需要将其序列化为 JSON,例如:{"x": {XXX} }
,其中 XXX
是 X
的表示形式,当 x
只是 X 对象时。好的,但是当它是什么都没有时,它必须是{}
的,即:{"x": {}}
。如何为此类D
实现ToJSON
实例? 转换为String
是错误的,我得到"{}"
而不是{}
如果我没有误解,我想你想要这个:
instance ToJSON D where
toJSON (D maybeX) =
object ["x" .= (case maybeX of
Nothing -> mempty
Just x -> toJSON x)]
而且,正如您在评论中指出的那样,您可以将这种内在表达打高尔夫球 maybe (Object mempty) toJSON maybeX :: Value
.