json注解及序列化


一、json框架

市面上的json框架常用的有 jackson、gson、fastjson。大家比較推崇的是fastjson,但是springmvc默認集成的是 jackson。

在一個項目中建議一個項目只是用一種 json 框架。

 

二、json使用場景

1、mvc

http傳輸的body雖然是json格式的,但實際還是以串字符串。我們使用對象接收需要進行json轉換。同樣,返回給瀏覽器時在解析成字json格式的符串。

springmvc 支持多種 json框架,默認jsckson,想要修改jackson。

step1、排除 jackson

step2、引入 fastjson

step3、重寫 MappingJackson2HttpMessageConverter,HttpMessageConverter。

2、遠程http調用

有時返回結果是String需要轉換

3、redis序列化

 

三、注解

1、注意json注解的使用要和提供注解的json框架對上。比如@JsonProperty("companId") 是jackson提供的,@JSONField(name = "companId") 是 fastjson提供的。如果springmvc 使用的框架是 jackson,此時在字段上增加 @JSONField 是無效的。

2、jsckson注解

@JacksonAnnotation
@JacksonAnnotationsInside
@JacksonInject
@JsonAlias
@JsonAnyGetter
@JsonAnySetter
@JsonAutoDetect
@JsonBackReference
@JsonClassDescription
@JsonCreator
@JsonEnumDefaultValue
@JsonFilter
@JsonFormat
@JsonGetter
@JsonIdentityInfo
@JsonIdentityReference
@JsonIgnore
@JsonIgnoreProperties
@JsonIgnoreType
@JsonInclude
@JsonManagedReference
@JsonMerge
@JsonProperty
@JsonPropertyDescription
@JsonPropertyOrder
@JsonRawValue
@JsonRootName
@JsonSetter
@JsonSubTypes
@JsonTypeId
@JsonTypeInfo
@JsonTypeName
@JsonUnwrapped
@JsonValue
@JsonView

 

3、fastjson注解

@JSONField(name = "companId")
@JSONCreator
@JSONPOJOBuilder
@JSONType
@FastJsonFilter()
@FastJsonView
@ResponseJSONP

 

4、順便說一下java提供的字段校驗注解:都來自package javax.validation.constraints;包

@AssertFalse
@AssertTrue
@DecimalMax(value = "")
@DecimalMin(value = "")
@Digits(integer = 6, fraction = 2, message = "{javax.validation.constraints.Digits.message}")
@Email
@Future
@FutureOrPresent
@Max(1)
@Min(1)
@Negative
@NegativeOrZero
@NotBlank
@NotEmpty
@NotNull
@Null
@Past
@PastOrPresent
@Pattern(regexp = "\\w+$")
@Positive
@PositiveOrZero
@Size

5、
package org.springframework.data.annotation;
@Transient
@TypeAlias
@AccessType
@AccessType
@Id
@Immutable
@Persistent
@QueryAnnotation
@ReadOnlyProperty
@Reference
@Version

 https://www.cnblogs.com/panbingqi/p/11212194.html

https://www.cnblogs.com/yucy/p/9057049.html




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM