私はJIRA
JSON
オブジェクトをマーシャルするためにdata
レコードを書いています。問題は、複数のオブジェクトが名前と値のペアで同じラベルを持つことです。 (カールから返され、フォーマット)ハスケルネームスペースに対処するには?
{"expand":"schema,names"
,"startAt":0
,"maxResults":2
,"total":74
,"issues":[
{"expand":"editmeta,renderedFields,transitions,changelog,operations"
,"id":"183614"
,"self":"https://10.64.16.44/rest/api/latest/issue/183614"
,"key":"BNAP-339"
,"fields":{"versions":[
{"self":"https://10.64.16.44/rest/api/2/version/28240"
,"id":"28240"
,"name":"2012-12-07"
,"archived":false
,"released":false
}
]
,"status":{"self":"https://10.64.16.44/rest/api/2/status/1"
,"description":"The issue is open and ready for the assignee to start work on it."
,"iconUrl":"https://10.64.16.44/images/icons/status_open.gif"
,"name":"Open"
,"id":"1"
}
,"description":"Do Re Mi Fa"
,"resolution":null
}
}
]
私は問題の対応Haskellの私が取得data
レコードを構築する場合:たとえば
data Issue = Issue {expand :: String
,id :: String
,self :: String
,key :: String
,fields :: Fields
} deriving Generic
data Version = Version {self :: String
,id :: String
,name :: String
,archived :: Bool
,released :: Bool
} deriving Generic
と 'ID' と '自己' は衝突しますが。レコード内の名前を変更し、手動で作成したFromJSON
インスタンスで修正するだけで、この問題を解決することができました。 代替ソリューションをご利用いただけます。
注:たとえば、次のデータ型は、フィールドの矛盾せずに自分の価値を表現することができます。しかし、相互運用性のために非Haskellコードの構造を一致させようとするとき、他の側が過負荷関数やサブタイプ階層に大きく依存している場合、より良いアプローチはないかもしれません。 –
私はあなたが別々のファイルを推奨した部分をupvotingしています。型クラスは、ユーザーが型を推論するのが非常に難しく、間違った型に誤って失敗したり、間違ったことをするため、型の悪い名前解決ソリューションを作成します。 –