java json注解_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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java 中的 JSON 序列化和反序列化可以使用许多第三方库来实现,比如 Jackson、Gson、FastJson 等。这里以 Jackson 库为例,介绍如何进行 JSON 序列化和反序列化。 ### Jackson 序列化 Jackson 序列化可以将 Java 对象转换为 JSON 字符串。示例代码如下: ```java ObjectMapper objectMapper = new ObjectMapper(); MyObject myObject = new MyObject(); // 要序列化Java 对象 String json = objectMapper.writeValueAsString(myObject); // 序列化JSON 字符串 ``` 在上面的代码中,ObjectMapper 是 Jackson 序列化和反序列化的核心类。writeValueAsString() 方法将 Java 对象序列化JSON 字符串。 如果要对序列化后的 JSON 字符串进行格式化,可以使用 ObjectMapper 的 writerWithDefaultPrettyPrinter() 方法: ```java ObjectMapper objectMapper = new ObjectMapper(); MyObject myObject = new MyObject(); // 要序列化Java 对象 String json = objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(myObject); // 序列化成格式化后的 JSON 字符串 ``` ### Jackson 反序列化 Jackson 反序列化可以将 JSON 字符串转换为 Java 对象。示例代码如下: ```java ObjectMapper objectMapper = new ObjectMapper(); String json = "{\"name\":\"Tom\", \"age\":20}"; // 要反序列化JSON 字符串 MyObject myObject = objectMapper.readValue(json, MyObject.class); // 反序列化Java 对象 ``` 在上面的代码中,readValue() 方法将 JSON 字符串反序列化Java 对象。第一个参数是要反序列化JSON 字符串,第二个参数是目标 Java 类型。 ### Jackson 注解 Jackson 序列化和反序列化还支持一些注解,用于控制序列化和反序列化的行为。比如,可以使用 @JsonProperty 注解指定 JSON 字段名: ```java public class MyObject { @JsonProperty("user_name") private String name; private int age; // ... } ``` 在上面的代码中,@JsonProperty("user_name") 注解指定了 JSON 字段名为 "user_name",而不是默认的 "name"。这样,在序列化和反序列化时,Jackson 就会使用指定的字段名。 除了 @JsonProperty 注解,Jackson 还支持许多其他注解,比如 @JsonIgnore、@JsonFormat、@JsonInclude 等。这些注解可以用于控制序列化和反序列化的行为,更多的注解用法可以参考 Jackson 的官方文档。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值