fastJson的feature和SerializerFeature属性的解释

发布于 2021-12-07 03:25:34 字数 13108 浏览 728 评论 1

 

package com.alibaba.fastjson.serializer;


 

public enum SerializerFeature {

    QuoteFieldNames,

   

    UseSingleQuotes,

   

    WriteMapNullValue,

   

    WriteEnumUsingToString,

   

    WriteEnumUsingName,

   

    UseISO8601DateFormat,

   

    WriteNullListAsEmpty,

   

    WriteNullStringAsEmpty,

   

    WriteNullNumberAsZero,

   

    WriteNullBooleanAsFalse,

   

    SkipTransientField,

   

    SortField,

   

    @Deprecated

    WriteTabAsSpecial,

   

    PrettyFormat,

   

    WriteClassName,


   

    DisableCircularReferenceDetect,


   

    WriteSlashAsSpecial,


   

    BrowserCompatible,


   

    WriteDateUseDateFormat,


   

    NotWriteRootClassName,


   

    DisableCheckSpecialChar,


   

    BeanToArray,


   

    WriteNonStringKeyAsString,

    

   

    NotWriteDefaultValue,

    

   

    BrowserSecure,

    

   

    IgnoreNonFieldGetter

    ;


    SerializerFeature(){

        mask = (1 << ordinal());

    }


    private final int mask;


    public final int getMask() {

        return mask;

    }


    public static boolean isEnabled(int features, SerializerFeature feature) {

        return (features & feature.getMask()) != 0;

    }

    

    public static boolean isEnabled(int features, int fieaturesB, SerializerFeature feature) {

        int mask = feature.getMask();

        

        return (features & mask) != 0 || (fieaturesB & mask) != 0;

    }


    public static int config(int features, SerializerFeature feature, boolean state) {

        if (state) {

            features |= feature.getMask();

        } else {

            features &= ~feature.getMask();

        }


        return features;

    }

    

    public static int of(SerializerFeature[] features) {

        if (features == null) {

            return 0;

        }

        

        int value = 0;

        

        for (SerializerFeature feature: features) {

            value |= feature.getMask();

        }

        

        return value;

    }

}

 上面是fastJson的转换和序列化的属性名,请问各位大神知不知道各个属性的具体作用啊,或者有文档的话发我看看,谢谢各位

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

少女净妖师 2021-12-07 14:11:53
/*
 * Developer by dove on 18-11-16 上午7:20.
 * Last modified 18-11-16 上午7:19.
 * Copyright (c) 2018. All rights reserved.
 */
package com.alibaba.fastjson.serializer;

/**
 * @author wenshao[szujobs@hotmail.com]
 */
public enum SerializerFeature {
    /**
     * 输出key时是否使用双引号,默认为true
     */
    QuoteFieldNames,//
    /**
     * 使用单引号而不是双引号,默认为false
     */
    UseSingleQuotes,//
    /**
     * 是否输出值为null的字段,默认为false
     */
    WriteMapNullValue,//
    /**
     * Enum输出name()或者original,默认为false
     */
    WriteEnumUsingToString,//
    /**
     * 用枚举name()输出
     */
    WriteEnumUsingName,//
    /**
     * Date使用ISO8601格式输出,默认为false
     */
    UseISO8601DateFormat,//
    /**
     * List字段如果为null,输出为[],而非null
     *
     * @since 1.1
     */
    WriteNullListAsEmpty,//
    /**
     * 字符类型字段如果为null,输出为”“,而非null
     *
     * @since 1.1
     */
    WriteNullStringAsEmpty,//
    /**
     * 数值字段如果为null,输出为0,而非null
     *
     * @since 1.1
     */
    WriteNullNumberAsZero,//
    /**
     * Boolean字段如果为null,输出为false,而非null
     *
     * @since 1.1
     */
    WriteNullBooleanAsFalse,//
    /**
     * 如果是true,类中的Get方法对应的Field是transient,序列化时将会被忽略。默认为true
     *
     * @since 1.1
     */
    SkipTransientField,//
    /**
     * 按字段名称排序后输出。默认为false
     *
     * @since 1.1
     */
    SortField,//
    /**
     * 把t做转义输出,默认为false
     *
     * @since 1.1.1
     */
    @Deprecated WriteTabAsSpecial,//
    /**
     * 结果是否格式化,默认为false
     *
     * @since 1.1.2
     */
    PrettyFormat,//
    /**
     * 序列化时写入类型信息,默认为false。反序列化是需用到
     *
     * @since 1.1.2
     */
    WriteClassName,//
    /**
     * 消除对同一对象循环引用的问题,默认为false
     *
     * @since 1.1.6
     */
    DisableCircularReferenceDetect,//
    /**
     * 对斜杠’/’进行转义
     *
     * @since 1.1.9
     */
    WriteSlashAsSpecial,//
    /**
     * 将中文都会序列化为uXXXX格式,字节数会多一些,但是能兼容IE 6,默认为false
     *
     * @since 1.1.10
     */
    BrowserCompatible,//
    /**
     * 全局修改日期格式,默认为false。JSON.DEFFAULT_DATE_FORMAT = “yyyy-MM-dd”;JSON.toJSONString(obj, SerializerFeature.WriteDateUseDateFormat);
     *
     * @since 1.1.14
     */
    WriteDateUseDateFormat,//
    /**
     * @since 1.1.15
     */
    NotWriteRootClassName,//
    /**
     * 一个对象的字符串属性中如果有特殊字符如双引号,将会在转成json时带有反斜杠转移符。如果不需要转义,可以使用这个属性。默认为false
     *
     * @since 1.1.19
     */
    @Deprecated DisableCheckSpecialChar,//
    /**
     * @since 1.1.35
     */
    BeanToArray,//
    /**
     * @since 1.1.37
     */
    WriteNonStringKeyAsString,//
    /**
     * @since 1.1.42
     */
    NotWriteDefaultValue,//
    /**
     * @since 1.2.6
     */
    BrowserSecure,//
    /**
     * @since 1.2.7
     */
    IgnoreNonFieldGetter,//
    /**
     * @since 1.2.9
     */
    WriteNonStringValueAsString,//
    /**
     * @since 1.2.11
     */
    IgnoreErrorGetter,//
    /**
     * @since 1.2.16
     */
    WriteBigDecimalAsPlain,//
    /**
     * @since 1.2.27
     */
    MapSortField;

    public final static SerializerFeature[] EMPTY = new SerializerFeature[0];
    public static final int WRITE_MAP_NULL_FEATURES = WriteMapNullValue.getMask() | WriteNullBooleanAsFalse.getMask() | WriteNullListAsEmpty.getMask() | WriteNullNumberAsZero.getMask() | WriteNullStringAsEmpty.getMask();
    public final int mask;

    SerializerFeature() {
        mask = (1 << ordinal());
    }

    public static boolean isEnabled(int features, SerializerFeature feature) {
        return (features & feature.mask) != 0;
    }

    public static boolean isEnabled(int features, int fieaturesB, SerializerFeature feature) {
        int mask = feature.mask;

        return (features & mask) != 0 || (fieaturesB & mask) != 0;
    }

    public static int config(int features, SerializerFeature feature, boolean state) {
        if (state) {
            features |= feature.mask;
        } else {
            features &= ~feature.mask;
        }

        return features;
    }

    public static int of(SerializerFeature[] features) {
        if (features == null) {
            return 0;
        }

        int value = 0;

        for (SerializerFeature feature : features) {
            value |= feature.mask;
        }

        return value;
    }

    public final int getMask() {
        return mask;
    }
}

 

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文