apes에서 반환 한 json을 구문 분석하기 위해 aeson을 사용하려고합니다. 응답은 wreq를 사용하여 API 엔드 포인트에서 반입됩니다.Aeson을 사용하여 문자열 디코드에 문제가 발생했습니다.
Left "Failed reading: Cannot decode byte '\\xa3': Data.Text.Encoding.decodeUtf8: Invalid UTF-8 stream"
이 아마 인해 내하지 제대로 이해하는 텍스트 인코딩에 있지만, API가 반환되는 문자열이 실제로 유효한 JSON 아니라고 보인다 :이 문자열에 eitherDecode를 실행할 때 내가 얻을. 그렇다면 어떻게해야합니까? 어느 쪽이든, 나는 올바른 방향으로 나를 가리키는 누군가 주셔서 감사합니다!
나는 내 문제를 재현하는 예제를 포함 시켰습니다.
{-# 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
동일한 문제가 발생하여 답변을 보았습니다. 그러나 어떻게 Aeson에게 Text를 공급합니까? 어느 쪽 이건 ByteString이 원하는 것 같습니다 ... – gueux