Я пытаюсь привыкнуть к некоторым библиотекам на Haskell, решая некоторые проблемы с онлайн-практикой.
У меня есть некоторый код, который выводит это
Object (fromList [("ABC", String "123")])
Это также может быть
Object (fromList [("123", String "ABC")])
Object (fromList [(String "123", String "ABC")])
Object (fromList [("123", "ABC")])
, что мне нужно извлечь это "123"
использование .:
с типом (.:) :: FromJSON a => Object -> Text -> Parser a
для извлечения значения по заданному ключу приводит к возникновению этой ошибки
• Couldn't match type ‘Value’ with ‘HashMap Text Value’
Expected type: Object
Actual type: Value
Мое лучшее предположение - мне придется написать парсер, но я понятия не имею, какпродолжайте делать это или что искать.
Код, который выдал ошибку:
x <- (eitherDecode <$> simpleHttp url) :: IO (Either String DataSet)
case x of
Left er -> print er
Right an -> do
let l = S.toList (data1 an)
print $ l .: "ABC"
где DataSet определяется следующим образом
newtype DataSet = DataSet {
data1 :: Object
} deriving (Show, Generic)
Если бы язамените
print $ (Data.List.head l) .: "ABC"
на
print $ (Data.List.head l)
, я получу
Object (fromList [("ABC", String "123")])