You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Haskell:如何让OpenApi自动去除字段下划线,避免手写Schema

解决Haskell Data.OpenApi自动生成Schema时字段下划线问题

你可以通过为ToSchema实例指定自定义SchemaOptions,复用和deriveJSON一致的字段名修改逻辑,无需手写完整的Schema定义:

import Data.OpenApi (ToSchema(..), genericDeclareNamedSchema, defaultSchemaOptions)

instance ToSchema Disclosed where
  declareNamedSchema = genericDeclareNamedSchema defaultSchemaOptions
    { fieldLabelModifier = drop 1
    }

这个方法借助genericDeclareNamedSchema基于Generic自动推导Schema,同时通过fieldLabelModifier = drop 1去掉字段名开头的下划线,和你配置deriveJSON的逻辑完全一致——既避免了冗余样板代码,又能让JSON编码与OpenApi Schema的字段名保持统一。

如果有多个类型需要相同的字段名处理规则,可以先定义通用配置项复用:

mySchemaOpts :: SchemaOptions
mySchemaOpts = defaultSchemaOptions { fieldLabelModifier = drop 1 }

instance ToSchema Disclosed where
  declareNamedSchema = genericDeclareNamedSchema mySchemaOpts

-- 其他需相同规则的类型可直接复用mySchemaOpts

配置完成后,自动生成的OpenApi Schema中,字段名会变为getDisclosed,不再带有下划线前缀。

内容的提问来源于stack exchange,提问作者haroldcarr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 07:46:32