使用AESON检查传入的JSON结构的类型

时间:2019-03-13 11:06:07

标签: haskell yesod aeson

我正在使用Yesod制作一个可以处理多种JSON格式的POST端点。这些我称为MessageType(请参见下面的代码)。

我正在尝试找出如何与进来的JSON结构进行大小写匹配,以弄清MessageType是什么,对于这个示例,我需要检查它是否为{{1 }}。

希望能够ProjectCreation

有没有一种方法可以简单地JSON (projectCreation structure) -> MessageType -> do X匹配JSON来确定其类型?

case

1 个答案:

答案 0 :(得分:1)

Aeson Object类型仅为HashMap Text Valuedocs),因此您可以使用withObject来获取对象(假设所有对象都是对象),然后执行任何逻辑操作想要将其转换为适当的类型。这很可能涉及检查特定键以识别它是哪个变体,或者可能让json在type字段中声明它的含义。当然,这是通过在parseJSON实例中制作FromJSON的手动版本来实现的,但是老实说,对于不完全简单的任何事情,我还是愿意这样做。