FastJson

作者: dist_zz | 来源:发表于2018-12-28 22:10 被阅读0次

# 1 继承关系

- 基类  `@JSONType(seeAlso={Condition.class, ConditionGroup.class})`

- 派生类  `@JSONType(typeName = "single") `

- 序列化 `JSON.toJSONString(condition, SerializerFeature.WriteClassName);`

- 反序列化 `JSON.parseObject(condition,BaseCondition.class);`

- 示例串 `{"@type":"single","field":"age","operator":"in","value":"","values":["18","20","26"]}`

# 2. 覆盖默认JackSon

```java

@Configuration

public class JsonConfig {

    @Bean

    public  HttpMessageConverters fastJsonHttpMessageConverters(){

        //1.需要定义一个convert转换消息的对象;

        FastJsonHttpMessageConverter fastJsonHttpMessageConverter = new FastJsonHttpMessageConverter();

        //2:添加fastJson的配置信息;

//      FastJsonConfig fastJsonConfig = new FastJsonConfig();

//        /**

//        * TODO 第一个SerializerFeature.PrettyFormat可以省略,毕竟这会造成额外的内存消耗和流量,第二个是用来指定当属性值为null是是否输出:pro:null

//              * SerializerFeature.SkipTransientField

//        */

//        fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);

//        Map<Class<?>, SerializeFilter> ft=new HashMap<>();

//

        //3处理中文乱码问题

        List<MediaType> fastMediaTypes = new ArrayList<>();

        fastMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);

        //4.在convert中添加配置信息.

        fastJsonHttpMessageConverter.setSupportedMediaTypes(fastMediaTypes);

//      fastJsonHttpMessageConverter.setFastJsonConfig(fastJsonConfig);

        HttpMessageConverter<?> converter = fastJsonHttpMessageConverter;

        ParserConfig.getGlobalInstance().setAutoTypeSupport(true);

        return new HttpMessageConverters(converter);

    }

}

```

名称| 含义|备注

---|---|---

QuoteFieldNames | 输出key时是否使用双引号,默认为true

UseSingleQuotes| 使用单引号而不是双引号,默认为false

WriteMapNullValue| 是否输出值为null的字段,默认为false

WriteEnumUsingToString| Enum输出name()或者original,默认为false

UseISO8601DateFormat| Date使用ISO8601格式输出,默认为false

WriteNullListAsEmpty| List字段如果为null,输出为[],而非null

WriteNullStringAsEmpty| 字符类型字段如果为null,输出为”“,而非null

WriteNullNumberAsZero| 数值字段如果为null,输出为0,而非null

WriteNullBooleanAsFalse| Boolean字段如果为null,输出为false,而非null

SkipTransientField| 如果是true,类中的Get方法对应的Field是transient,序列化时将会被忽略。默认为true

SortField| 按字段名称排序后输出。默认为false

WriteTabAsSpecia|l 把\t做转义输出,默认为false| 不推荐

PrettyFormat| 结果是否格式化,默认为false

WriteClassName| 序列化时写入类型信息,默认为false。反序列化是需用到

DisableCircularReferenceDetect| 消除对同一对象循环引用的问题,默认为false

WriteSlashAsSpecial| 对斜杠’/’进行转义

BrowserCompatible| 将中文都会序列化为\uXXXX格式,字节数会多一些,但是能兼容IE 6,默认为false

WriteDateUseDateFormat| 全局修改日期格式,默认为false。JSON.DEFFAULT_DATE_FORMAT = “yyyy-MM-dd”;JSON.toJSONString(obj, SerializerFeature.WriteDateUseDateFormat);

DisableCheckSpecialChar| 一个对象的字符串属性中如果有特殊字符如双引号,将会在转成json时带有反斜杠转移符。如果不需要转义,可以使用这个属性。默认为false

NotWriteRootClassName| 含义

BeanToArray| 将对象转为array输出

WriteNonStringKeyAsString| 含义

NotWriteDefaultValue| 含义

BrowserSecure| 含义

IgnoreNonFieldGetter| 含义

WriteEnumUsingName| 含义

相关文章

网友评论

      本文标题:FastJson

      本文链接:https://www.haomeiwen.com/subject/kvkylqtx.html