-
Notifications
You must be signed in to change notification settings - Fork 541
Description
请描述您的需求或者改进建议
此建议源自 issue #3366 。尝试实现该功能的过程中发现一些问题。
在 fastjson1 中,Feature.SkipTransientField 特性是默认开启的(初始化于 DEFAULT_GENERATE_FEATURE);而在 fastjson2 中,貌似没有提供该功能,所有特性都是默认关闭的。所以,在 fastjson2 中如果有该特性,只能定义为 NotSkipTransientField(如果定义为SkipTransientField,默认关闭,则默认序列化 transient 属性;且不兼容 fastjson1)。
另外阅读源码发现,如果通过 JSON.toJSONString(a, JSONWriter.Feature.NotSkipTransientField) 传入该特性,在 createObjectWriter 时,无法判断该特性的开启情况(貌似拿不到 context.feature,也没找到其他途径能判断)。只能在 objectWriter.write 时能拿到,但肯定不行(应该在构建字段序列化器前判断)。(如果该特性定义在@JSONField中,或JSON.config全局配置 倒是能拿到)
我的思路是,是否可以将其作为一个属性定义在 @JSONField 注解中,默认值为 true,如果用户定义 @JSONField(SkipTransient = false),则框架只需在解析注解时进行判断,相较于定义为 Feature,改动的粒度也小一些(缺点是无法通过全局一键配置)。
如果此建议可行,我可以协助完成这项任务。
请描述你建议的实现方案
对您想要需求或建议的实现方案的详细描述。
描述您考虑过的替代方案
对您考虑过的任何替代解决方案或功能的描述。
附加信息
如果你还有其他需要提供的信息,可以在这里填写(可以提供截图、视频等)。