Haskell 使用Aeson解析顶级值

Haskell 使用Aeson解析顶级值,haskell,aeson,Haskell,Aeson,我试图用Aeson解析JSON值,到目前为止,解析对象或数组没有问题,但我无法让Aeson解析只是字符串的JSON文档 据我所知,由于RFC 7159值是合法的JSON文档,而Aeson从0.9.0.0(我使用的是0.9.0.1)起就支持这一点,所以它应该可以工作。例如,我正在包装一个API,该API在许多调用中将字符串作为顶级JSON文档返回,为了某种静态键入安全性,我想重新键入这些字符串: newtype Bar = Bar String deriving (Eq, Show) instan

我试图用Aeson解析JSON值,到目前为止,解析对象或数组没有问题,但我无法让Aeson解析只是字符串的JSON文档

据我所知,由于RFC 7159值是合法的JSON文档,而Aeson从0.9.0.0(我使用的是0.9.0.1)起就支持这一点,所以它应该可以工作。例如,我正在包装一个API,该API在许多调用中将字符串作为顶级JSON文档返回,为了某种静态键入安全性,我想重新键入这些字符串:

newtype Bar = Bar String deriving (Eq, Show)
instance FromJSON Bar where
    parseJSON (String v) = pure (Bar $ T.unpack v)
    parseJSON _ = mzero
如果我试图解码某些东西:

decode "JustSomeRandomString" :: Maybe Bar
我得到的只是
什么都没有
作为回报


知道我做错了什么吗?当然,我可以在没有Aeson的情况下处理将字符串作为JSON文档返回的API调用,但我希望保持一致

尝试
解码“\'JustSomeRandomString\”::可能是Bar

尝试
解码“\'JustSomeRandomString\”::可能是Bar

真不敢相信我错过了,我只是从控制台复制了curl输出,并使用了它。我正在使用的API是坏的,它没有用引号括住字符串…我不敢相信我错过了,我只是从控制台复制了curl输出并使用了它。我使用的API已损坏,它没有将字符串括在引号中。。。