1
我有类似下面的JSON文件:解析引用在解析JSON文件与埃宋
{
"persons":[
{ "id":"343", "name":"John", "age":"45" }
],
"houses":[
{ "owner_id":"343" "address":"Charing Cross" }
]
}
和Haskell数据类型如下所示:
data City = City { persons :: [Person], houses :: [Houses] }
data Person = Person { personId :: Text, name :: Text }
data House = House { owner :: Person, address :: Text }
在解析埃宋的Value
对象,我想以解决owner_id
参考文献houses
并将其转化为完整的Person
值。
通常我会用像(.:)
这些漂亮的运算符构造Aeson解析器,但解析引用的需要似乎会使事情变得复杂。
有没有办法定义一个Parser City
实现,它不会在JSON对象的底层HashMap
中查找关键字?
我建议你解析文字JSON对象,参考文献和所有的,然后将其转换为两者形成你喜欢。您可以通过参数化'House'来轻松完成此操作:'数据House a = House {a :: person,..}'。然后你为'City PersonId'编写一个解析器,并且有一个函数'City PersonId - > City Person'。通过编写同时试图完成这两件事的代码,您将获得什么优势?我看不到任何东西。至少有两个缺点:代码复杂性大大增加,可维护性降低。 – user2407038
为什么不把所有的人都放在一个imap上,你可以直接查看。 –