У меня сложный файл JSON, и я хотел бы извлечь из него только одно значение. Я мог бы определить все struct
и получить Deserialize
для всех из них, но я хотел бы просто написать небольшой ручной код, чтобы вытащить это одно значение. Документация Serde , откровенно говоря, просто смутила меня.
Мой контент 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
Что эквивалентно Серде?