Jackson使用备忘

让Spring能够把作为ResponseBody返回的Java对象自动使用Jackson序列化为JSON根式

这样,只要在控制器方法上添加@ResponseBody注解(或在控制器类上添加@RestController注解),则方法返回值就会被Jackson自动序列化为JSON格式返回。
见配置文件片段:
<!-- 使用Jackson把ResponseBody编码为JSON -->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<property name="messageConverters">
<list>
<ref bean="mappingJacksonHttpMessageConverter"/>
</list>
</property>
</bean>
<bean id="mappingJacksonHttpMessageConverter"
class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/plain;charset=UTF-8</value>
<value>application/json;charset=UTF-8</value>
</list>
</property>
</bean>

常用Jackson注解解释

@JsonNaming(SnakeCaseStrategy.class)
指定Json字段名映射策略为蛇形大小写策略。缺省则直接使用Bean属性名
可用的命名映射策略还有:
KebabCaseStrategy: 肉串策略 - 单词小写,使用连字符'-'连接
SnakeCaseStrategy: 蛇形策略 - 单词小写,使用下划线'_'连接;即老版本中的LowerCaseWithUnderscoresStrategy
LowerCaseStrategy: 小写策略 - 简单的把所有字母全部转为小写,不添加连接符
UpperCamelCaseStrategy: 驼峰策略 - 单词首字母大写其它小写,不添加连接符;即老版本中的PascalCaseStrategy

@JsonIgnoreProperties({"id", "created", "steps", "copy", "stepList"})
类注解,指定序列化时忽略这些属性,可以用于覆盖超类中默认输出的属性

@JsonInclude(Include.NON_EMPTY)
仅在属性不为空时序列化此字段,对于字符串,即null或空字符串

@JsonIgnore
序列化时忽略此字段

@JsonProperty(value = "user_name")
指定序列化时的字段名,默认使用属性名

@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
指定Date类字段序列化时的格式

@JsonUnwrapped(prefix = "user_")
private User user;
把成员对象中的属性提升到其容器类,并添加给定的前缀,比如上例中: User类中有name和age两个属性,不使用此注解则序列化为:
... "user": { "name": "xxx", "age": 22 } ...
使用此注解则序列化为:
... "user_name": "xxx", "user_age": 22, ...

@JsonIgnoreType
类注解,序列化时忽略此类

@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class,property = "id") 
作用于类或属性上,被用来在序列化/反序列化时为该对象或字段添加一个对象识别码,通常是用来解决循环嵌套的问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot中使用Jackson库可以方便地进行JSON的序列化和反序列化操作。以下是使用Jackson的一些基本用法: 1. 添加Jackson依赖:在你的项目中,需要添加Jackson的依赖项。在`pom.xml`文件中,添加以下依赖项: ```xml <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.12.4</version> </dependency> ``` 2. 序列化对象为JSON使用`ObjectMapper`类可以将Java对象序列化为JSON字符串。例如,假设有一个名为`User`的Java类: ```java public class User { private String name; private int age; // 省略构造函数、getter和setter方法 @Override public String toString() { return "User{" + "name='" + name + '\'' + ", age=" + age + '}'; } } ``` 你可以使用以下代码将`User`对象序列化为JSON字符串: ```java import com.fasterxml.jackson.databind.ObjectMapper; public class Main { public static void main(String[] args) throws Exception { User user = new User("John Doe", 30); ObjectMapper objectMapper = new ObjectMapper(); String json = objectMapper.writeValueAsString(user); System.out.println(json); } } ``` 3. 反序列化JSON为对象:使用`ObjectMapper`类可以将JSON字符串反序列化为Java对象。例如,假设有一个名为`User`的Java类: ```java public class User { private String name; private int age; // 省略构造函数、getter和setter方法 @Override public String toString() { return "User{" + "name='" + name + '\'' + ", age=" + age + '}'; } } ``` 你可以使用以下代码将JSON字符串反序列化为`User`对象: ```java import com.fasterxml.jackson.databind.ObjectMapper; public class Main { public static void main(String[] args) throws Exception { String json = "{\"name\":\"John Doe\",\"age\":30}"; ObjectMapper objectMapper = new ObjectMapper(); User user = objectMapper.readValue(json, User.class); System.out.println(user); } } ``` 以上是使用Jackson库进行基本的JSON序列化和反序列化操作的示例。你可以根据需要使用更多的Jackson功能,例如处理日期、自定义序列化器等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值