私は次のタイプを持っています:
data Device = Device { _deviceId :: DeviceId
, _deviceName :: Text
, _deviceDtype :: DType }
deriving (Show, Eq, Generic)
makeFields ''Device
$(deriveJSON (mkOptions "_device") ''Device)
ここでは、JSON 表現のフィールドの名前をこのデータ型に適合させる必要があるためderiveJSON
、メカニズムの代わりにを使用します。Generic
-- | Make JSON conversion options.
mkOptions :: String -> Options
mkOptions prefix = defaultOptions { fieldLabelModifier = removePrefix prefix
, unwrapUnaryRecords = True
}
接頭辞は、型のレンズを生成するために必要ですが、JSON 表現では必要ありません。
今、私はのインスタンスを必要とするservant-swaggerを使用して、Swagger ドキュメントを生成しようとしています。ここでの問題は、生成されたスキーマが上記のアクセサ関数の指定された接頭辞付きの名前 ( 、、) を持つことです。代わりに、変更されたバージョン ( 、、および) が必要です。ToSchema
Device
_deviceId
_deviceName
_deviceDType
id
name
dtype
そのような方法で一般的な派生プロセスをカスタマイズする方法はありますか?