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