Я создал новый тип UUID
в своем приложении для представления Text
идентификаторов.
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
...
newtype UUID =
UUID Text
deriving (Eq, Generic, FromJSON, ToJSON, FromField, ToField, FromText, Show, Read, Hashable)
Моему приложению нужен экземпляр FromJSON
для HashMap UUID a
. HashMap определяет экземпляр для HashMap Text a
, есть ли способ использовать его при определении моего?
Если мне нужно переопределить экземпляр, как мне его написать? Вот эквивалент из Data.Aeson.Types.Instances
а>:
instance (FromJSON v) => FromJSON (H.HashMap Text v) where
parseJSON = withObject "HashMap Text a" $ H.traverseWithKey (\k v -> parseJSON v <?> Key k)
Как бы вы написали это для UUID
? Где определены Key
и <?>
и как я могу легко найти их самостоятельно? Гугл не помог.
Data.Aeson.Types.Internal
, но мне пришлось клонировать репозиторий, чтобы найти его. Есть ли способ лучше? Кроме того, это не выставлено, поэтому я даже не могу его использовать? - person Sean Clark Hess   schedule 16.12.2015