具有依赖类型的parseJSON类方法

时间:2014-07-22 00:49:06

标签: haskell typeclass aeson

并提前感谢您的帮助:)

以下是我试图解决的问题:

我有一个类型(MyType),我为它写了一个JSON解析器(使用aeson库),这个解析器依赖于另一个值(Config):

import Data.Aeson

data MyType = MyType Text
data Config = Config Text

parseMyType :: Config -> Value -> Parser MyType
parseMyType (Config f) (Object o) = do (String v) <- o .: f
                                       return $ MyType v

真的希望为其编写FromJSON个实例...但parseJSON仅取决于Value(无法配置):

instance FromJSON MyType where

    parseJSON :: Value -> Parser MyType
    parseJSON = ???

我想知道在这种情况下是否可以使用类型类。我可能错过了某种类型的伎俩......或者我可以使用哪种语言扩展?

谢谢!

1 个答案:

答案 0 :(得分:1)

如果你想&#34;魔术起来&#34;一个基于运行时信息的实例声明,这可以通过reflection库来实现,虽然它有一些相当深刻的魔力并且可能有更好的方法:https://www.fpcomplete.com/user/thoughtpolice/using-reflection