public class FastJsonTest {
private FastJsonEnum fastJsonEnum = FastJsonEnum.FAST_JSON_ENUM;
public static void main(String[] args) { FastJsonTest fastJsonTest = new FastJsonTest(); System.out.println(JSON.toJSONString(fastJsonTest)); }
enum FastJsonEnum { FAST_JSON_ENUM; }
问题:
fastjosn1输出{"fastJsonEnum":"FAST_JSON_ENUM"} falstjosn2输出{"fastJsonEnum":0}
是否默认移除了JSONWriter.Feature.WriteEnumUsingToString和JSONWriter.Feature.WriteEnumUsingName
原提问者GitHub用户hyuga0410
根据代码和输出结果来看,fastjson 序列化枚举类型的行为确实有所变化。在 fastjosn1 中,枚举类型被序列化成了字符串形式,而在 fastjosn2 中,枚举类型被序列化成了整数形式。
根据 fastjson 的文档,序列化枚举类型的方式可以通过设置 JSONWriter.Feature.WriteEnumUsingToString 和 JSONWriter.Feature.WriteEnumUsingName 来控制。默认情况下,fastjson 会将枚举类型序列化成整数形式,因此 fastjosn2 的输出结果是符合预期的。
如果需要将枚举类型序列化成字符串形式,可以使用以下代码:
JSON.toJSONString(fastJsonTest, SerializerFeature.WriteEnumUsingToString); 这样就能够得到和 fastjosn1 相同的输出结果了。
是的,默认没有打开WriteEnumUsingName,可以显示打开,也可以通过JSON.config配置全局打开
原回答者GitHub用户wenshao
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。