Я пишу службу 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, но как?
- Я мог бы просто не иметь записи Reporter и изменить поле Reporter с помощью отдельной службы после создания заявки. Что я знаю, как это сделать, но лучший ли это способ?
Создайте объект 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
. - person Johannes Kuhn   schedule 07.11.2014