Skip to content

[FEATURE] 对于在 fastjson2 中提供不跳过 transient 字段功能的建议 #3659

@jujn

Description

@jujn

请描述您的需求或者改进建议

此建议源自 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,改动的粒度也小一些(缺点是无法通过全局一键配置)。

如果此建议可行,我可以协助完成这项任务。

请描述你建议的实现方案

对您想要需求或建议的实现方案的详细描述。

描述您考虑过的替代方案

对您考虑过的任何替代解决方案或功能的描述。

附加信息

如果你还有其他需要提供的信息,可以在这里填写(可以提供截图、视频等)。

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions