我正在爲JIRA編寫JSON服務,並且遇到了與Haskell命名空間衝突的需求。 我有這樣的記錄你怎麼能有兩個相同的字段名稱的記錄?
data Assignee = Assignee {name :: Text} deriving Generic
instance ToJSON Assignee
這是由什麼JIRA希望,不幸的是它要對不同的對象相同的字段決定。
data Reporter = Reporter {name :: Text} deriving Generic
instance ToJSON 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'功能。 – 2014-11-06 23:16:32