11
UTCTime 값을 구문 분석하기 위해 aeson을 가져올 수 없습니다. 나는 하나를 인코딩하고 피드백을 시도하지만, 작동하지 않았다 :있는 형식 설명을 다음aeson을 사용하여 utctime을 구문 분석합니다.
instance FromJSON UTCTime where
parseJSON = withText "UTCTime" $ \t ->
case parseTime defaultTimeLocale "%FT%T%QZ" (unpack t) of
Just d -> pure d
_ -> fail "could not parse ISO-8601 date"
:
Prelude Data.Aeson Data.Time.Clock> getCurrentTime >>= (print . encode)
"\"2013-10-17T09:42:49.007Z\""
Prelude Data.Aeson Data.Time.Clock> decode "2013-10-17T09:42:49.007Z" :: Maybe UTCTime
Nothing
Prelude Data.Aeson Data.Time.Clock> decode "\"2013-10-17T09:42:49.007Z\"" :: Maybe UTCTime
Nothing
utcTime를 유형의 FromJSON 인스턴스는 다음 (ref)입니다 here, 모든 것이 정상입니다. 내가 뭘 놓치고 있니?
나는이 부분을 읽으했다. 그러나, 나의 두뇌는 연결을 만들지 않았다. 감사! – Simon
이 문제를 해결하기위한 실용적인 트릭은 목록 레이어에서 유형을 그냥 감싸는 것입니다 :'decode "...":: FromJSON a => 아마도 [a]'. 나는 서브 파서를 빠르게 확인하기 위해이 모든 것을 사용한다. 비표준 JSON 동작을 얻기 위해 내부 Aeson 파서를 재배치하는 것보다 훨씬 쉽습니다. –
'Data.Aeson.Parser'의'value' 파서를 사용하면 스펙을 오버라이드 할 수 있습니다. 최상위 json 객체/배열을 구문 분석하기위한 요구 사항 및 개별 값 구문 분석. attoparsec과 함께 사용하십시오. –