Jackson 注解开发

1、 Jackson 序列化注解

  1. @JsonAnyGetter:允许灵活地将Map属性用作标准属性平铺在父对象上,适用序列化,作用于get方法上,返序列化用@JsonAnySetter

@Data
public class OrderDetails {
    Map<String, String> tempMap = new HashMap<String, String>(){{
        put("temp","temp");
        put("temp1","temp1");
    }};

    @JsonAnyGetter
    public Map<String, String> getTempMap() {
        return tempMap;
    }
}

//
{
    "temp": "temp",
    "temp1": "temp1"
}
  1. @JsonGetter:序列化时别名,作用于get方法上

  2. @JsonPropertyOrder:序列化时排列排列顺序

  3. @JsonRootName:包一层

1.4 @JsonRawValue

1.5 @JsonValue

1.7 @JsonSerialize

Jackson 反序列化注解

2.1、 @JsonCreator

2.2、 @JacksonInject

2.3、 @JsonAnySetter

2.4、 @JsonSetter

2.5、 @JsonDeserialize

2.6、 @JsonAlias

Jackson 属性注解

3.1、 @JsonIgnoreProperties

3.2、 @JsonIgnore

3.3、 @JsonIgnoreType

3.4、 @JsonInclude

3.5、 @JsonAutoDetect

Jackson常用注解

4.1、 @JsonProperty

4.2、 @JsonFormat

4.4、 @JsonView

4.5、 @JsonManagedReference,@ JsonBackReference

4.6、 @JsonIdentityInfo

4.7、 @JsonFilter

@JsonAnyGetter

@JsonAnyGeter注解,可以灵活地把类型为Map的属性作为标准属性序列化到JSON字符串中,有如下特点:

  • 方法为非静态方法,并且方法不带任何参数。

  • 返回值必须是Map类型

  • 在一个实体类中只能用在一个方法上

@JsonGetter

@JsonGetter注解是@JsonProperty注解的替代方法,用于将方法标记为getter方法。

@JsonPropertyOrder

我们可以使用@JsonPropertyOrder注解 来指定序列化时各个属性的顺序。

还可以使用@JsonPropertyOrder(alphabetic=true)按字母顺序进行排序。

@JsonRawValue

如果对象中某个字段的值是 JSON,在使用Jackson序列化时,输出的JSON会有问题,这时我们可以使用注解 @JsonRawValue将JSON值原样输出。

@JsonValue

@JsonValue可以用在字段或者字段对应的get方法上,当加上@JsonValue注解时,序列化返回的不再是JSON字符串,而是字段对应的值。一个类中只能有一个@JsonValue注解。

@JsonRootName

正常情况下,我们定义一个User实体,并序列化成JSON字符串,输出结果如下:

但是,在某些情况下我们需要将JSON包装成如下格式:

@JsonRootName注解指定要包装的root名称,并在ObjectMapper实例中启用包装。

最后更新于