Я пишу службу JSON для JIRA, и я столкнулся с требованием, которое противоречит пространству имен Haskell. У меня есть эта записьКак у вас есть две записи с одинаковыми именами полей?
data Assignee = Assignee {name :: Text} deriving Generic
instance ToJSON Assignee
Это продиктовано тем, что JIRA хочет, к сожалению, она хочет того же поля для другого объекта.
data Reporter = Reporter {name :: Text} deriving Generic
instance ToJSON Reporter
Я вижу несколько вариантов:
- Может быть, я могу обойти компилятор жалуется с шаблоном Haskell, но как?
- Я мог просто не иметь запись Репортера и изменить поле репортера с отдельной службой после создания билета. Что я знаю, как это сделать, но это лучший способ?
Создать объект JSON вручную, но я формирую его из этой записи:
data Fields = Fields { project :: HashMap Key Project , summary :: Text , issuetype :: HashMap Name Task , versions :: [HashMap Name Text] , description :: Text , assignee :: Assignee } deriving (Generic)
Мысль о том, что делает это вручную дает мне Уиггинс. Если я так хочу.
Итак, теперь мой вопрос, если нет другого лучшего способа, чем те, которые я представил, какой из них - лучший способ действий?
Может быть, вы можете написать их в различных модулях и не импортировать 'name' функцию. –