JSON解析相关
一、FastJSON,Gson,Jackson性能对比
参考https://blog.csdn.net/zdyueguanyun/article/details/52864777
结论:
把Java对象JSON序列化,Jackson速度最快,在测试中比Gson快接近50%,FastJSON和Gson速度接近。 把JSON反序列化成Java对象,FastJSON、Jackson速度接近,Gson速度稍慢,不过差距很小。
别只看性能,目前有一结构复杂的对象,用fastjson转化失败,用jackson转化失败,用gson转化成功,说明gson功能稳定强大
二、Spring默认使用的JSON工具--Jackson
参考https://blog.csdn.net/lyj434786736lyj/article/details/103365064
我们常用的json转换工具包括fastJson、Gson、Jackson等。其中Gson是Google所维护,功能全。fastJson特点是快,但是爆出几次的重大bug让人很难再去选择它。fastjson这么快老外为啥还是热衷 jackson? JackSon是Spring的御用工具,和Spring无缝集成,提供灵活的定制化开发的注解。如果使用Spring框架进行开发,建议使用JackSon。
三、Jackson常用配置和注解
参考http://www.heartthinkdo.com/?p=1320
常用配置
用到Feature主要有四种:
-
DeserializationFeature
-
SerializationFeature
-
JsonParser.Feature
-
JsonGenerator.Feature
属性介绍
反序列化 DeserializationFeature
反序列化就是指将json转成Object的过程,涉及到属性如下:
属性 | 解释 |
---|---|
FAIL_ON_UNKNOWN_PROPERTIES | 设置为false,表示:json中字段多了,不会影响json转Object |
ACCEPT_EMPTY_STRING_AS_NULL_OBJECT | 设置为ture时,可以将一个空字符串“”转成一个null。如{“student”:””},其中“student”在反序列化时对应类Student,此时Student的值会被设置为null。 |
序列化 SerializationFeature
序列化就是指将Ojbect转成Json的过程,涉及到属性如下:
属性 | 解释 |
---|---|
WRITE_NULL_MAP_VALUES | 如果为false,则表示跳过null的字段 |
注解
在类的成员变量上使用,常用的注解如下:
注解 | 解释 |
---|---|
@JsonIgnore | 此注解用于属性上,作用是进行JSON操作时忽略该属性 |
@JsonProperty | 将类成员的名称序列化时,变为另外一个名称。如@JsonProperty(“bank_code”)。 |
@JsonInclude | @JsonInclude(JsonInclude.Include.NON_NULL)表示跳过值为null的类成员 |
@JsonFormat | 对date类型进行格式化,@JsonFormat(pattern = “yyyy-MM-dd HH:mm:ss”) |