我有一个复杂的JSON文件,我只想从中提取一个值.我可以定义所有的struct
,并在所有的struct
上推导出Deserialize
,但我只想编写一些手动代码来提取这个值.坦率地说,这Serde documentation人让我很困惑.
我的JSON内容具有以下布局:
{
"data": [
{
"hostname": "a hostname"
}
]
}
我通过进入data
来寻找导航到的值,然后取数组的第一个元素,然后取hostname
.
在哈斯克尔,我会这样做:
newtype Host = Host Text
instance FromJSON Host where
parseJSON (Object o) = (return . Host) <=< (.: "hostname") <=< (fmap (!! 0) . parseJSON) <=< (.: "data") $ o
parseJSON _ = mzero
Serde的类似功能是什么?