У меня есть сложный файл JSON, и я хотел бы извлечь из него только одно значение. Я мог бы определить все struct
и получить Deserialize
для всех из них, но я хотел бы просто написать небольшой ручной код, чтобы извлечь это одно значение. Откровенно говоря, документация Serde меня просто смутила.
Мой контент JSON имеет следующий макет:
{
"data": [
{
"hostname": "a hostname"
}
]
}
Я ищу значение, к которому перешел, перейдя в data
, затем взяв первый элемент массива и взяв значение hostname
.
В Haskell я бы сделал это так:
newtype Host = Host Text
instance FromJSON Host where
parseJSON (Object o) = (return . Host) <=< (.: "hostname") <=< (fmap (!! 0) . parseJSON) <=< (.: "data") $ o
parseJSON _ = mzero
Какой эквивалент для Серде?