Предположим, есть эта запись:
data Place = Place
{ details :: PlaceDetails
, amenities :: [Amenity]
, photos :: [PlacePhoto]
} deriving (Generic)
Я реализовал toEncoding
для каждого типа данных, но я хотел бы объединить эти поля в типе Place
. На данный момент это выглядит так:
instance ToJSON Place where
toEncoding Place{..} =
pairs $ "details" .= details
<> "amenities" .= amenities
<> "photos" .= photos
Я использую toEncoding
, чтобы сохранить определенный порядок, который я хочу. Однако я хотел бы удалить этот ключ details
из кодировки, чтобы все поля из PlaceDetails
находились на одном уровне с amenities
и photos
, без указания всех этих полей вручную, например PlaceDetails
довольно большой. Как бы я это сделал? Я знаю, что могу объединить [Value]
, используя HML.unions
, но мне удалось сделать это только с toJSON
, а не toEncoding
.
То, что у меня сейчас есть:
{
"details": {
"id": "place_6de6cda0f8524a6f9c264c84afdbadad",
"name":"somename",
"description":"some description",
"other": "a lot more fields"
}
"amenities": []
"photos": []
}
Вот что я хочу:
{
"id":"place_6de6cda0f8524a6f9c264c84afdbadad",
"name":"somename",
"description":"some description",
"other": "a lot more fields",
"amenities": []
"photos": []
}
Спасибо.