我正在尝试使用 aeson 来解析 api 返回的 json。使用 wreq 从 api 端点获取响应。在此字符串上运行任一解码时,我得到:
Left "Failed reading: Cannot decode byte '\\xa3': Data.Text.Encoding.decodeUtf8: Invalid UTF-8 stream"
这可能是由于我没有正确理解文本编码,但在我看来,api 返回的字符串实际上不是有效的 json。如果是这样,我应该如何进行?无论哪种方式,我都会感谢有人指出我正确的方向!
我在下面包含了一个重现我的问题的示例。
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE OverloadedStrings #-}
import Data.Aeson
import Data.Text
import GHC.Generics
import Data.ByteString.Lazy
data Test = Test { priceDescription ∷ Text } deriving (Show, Generic)
instance FromJSON Test
main = do
let a = "\r\n{\r\n\"priceDescription\": \"\163\&5.98 each\"\r\n}" :: ByteString
let result = eitherDecode a :: Either String Test
print result