楼主的工作语言是 GO,有一个需求是将某个结构体序列化为 json 串,key 要保持小写。但这个结构体默认序列化结果里的 key 都是大写,如:
{"City":{"Id":"001001","Name":"XX 市"}}
由于这个结构体的定义不方便改动,所以楼主就写了一个通用工具函数MarshalLowerKey()
,这个函数会序列化任何结构体,且返回值里的 key 都是小写:
{"city":{"id":"001001","name":"XX 市"}}
楼主的某位同事也想用这个函数,但他提出,他的业务场景有坑,个别 key 不能转换为小写。于是楼主给这个函数加上了 blocklist 参数,让 blocklist 里的 key 不会被转换为小写。但该同事并不满意,认为其他同事可能会不知道这个坑,这个函数应该变成 allowlist 模式,只有在 allowlist 里的 key 才会被转换为小写,或者在这个工具函数的注释里说明这个坑。但楼主认为这种业务上的坑不应该由工具函数来关心。 各位 v 友怎么看呢?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.