`

Jackson在spring MVC中的应用 --- 20161023

阅读更多

一、jackson介绍

Overview of The Jackson API

Jackson Api contains a lot of functionalities to read and build json using java. It has very powerful data binding capabilities and provides a framework to serialize custom java objects to json string and deserialize json string back to java objects. Json written with jackson can contain embedded class information that helps in creating the complete object tree during deserialization.

jackson的git主页: https://github.com/FasterXML/jackson

jackson的文档主页:https://github.com/FasterXML/jackson-docs

 

好了,看到这就结束了,其他的可以去官网看文档了。

 

二、jackson实际应用

1. 首先你可以轻易的使用jackson来将java对象转换为json字符串,并且可以设置它的格式。例如下面。可以定制要转化的时间的格式。或者将json字符串转化java对象。

 

{"title":"Kind Of Blue","links":["link1","link2"],
"songs":["So What","Flamenco Sketches","Freddie Freeloader"],
"artist":{"name":"Miles Davis","birthDate":-1376027600000}}

 

 

 

 

{
  "title" : "Kind Of Blue",
  "links" : [ "link1" , "link2" ],
  "songs" : [ "So What", "Flamenco Sketches", "Freddie Freeloader" ],
  "artist" : {
    "name" : "Miles Davis",
    "birthDate" : -1376027600000
  }
}

 

 

2. 在spring MVC中,我们经常需要@ResponseBody编写接口来返回一些json格式的数据,这时我看到过两种情况:

(1)有人用google的Gson将结果转换为json再返回字符串。显然他不知道spring会自动用jackson将你返回的对象转换为json。

(2)有人用jackson但是,例如日期,空字符串的处理,不需要的字符串等。则进行手动的干预,已达到想要的效果。其实,jackson的注解功能可以轻松的完成这些功能。

例如:

 @JsonIgnoreProperties({"prop1", "prop2"}) 加在POJO上,当你返回该对象时,spring自动转化为json时

就会忽略这里列出来的属性。

 

@JsonFormat @JsonFormat(pattern="yyyy-MM-dd"), 不需要任何多余配置,直接转化为想要的格式,不过存

在时区问题,默认是按照标准格林威治时间。

 

 

解决办法:
@JsonFormat(pattern="yyyy-MM-dd")
 public Date getRegistDate() {
  return this.registDate;
 }
改成
@JsonFormat(pattern="yyyy-MM-dd",timezone="GMT+8")
 public Date getRegistDate() {
  return this.registDate;
 }

 

 

下面列出了几个有用的注解,当然jackson的注解远不止这些,还有去空,设置为null时返回“”而不是null等,都在上面的文档中等着你去探索。

 

Jackson相关:

1、@JsonProperty 

2、@JsonIgnoreProperties

此注解是类注解,作用是json序列化时将java bean中的一些属性忽略掉,序列化和反序列化都受影响。

 

3、@JsonIgnore

此注解用于属性或者方法上(最好是属性上),作用和上面的@JsonIgnoreProperties一样。

 

4、@JsonFormat

此注解用于属性或者方法上(最好是属性上),可以方便的把Date类型直接转化为我们想要的模式,比如@JsonFormat(pattern = "yyyy-MM-dd HH-mm-ss")

 

5、@JsonSerialize

此注解用于属性或者getter方法上,用于在序列化时嵌入我们自定义的代码,比如序列化一个double时在其后面限制两位小数点。

 参考:http://blog.csdn.net/xcy13638760/article/details/8962085

6、@JsonDeserialize

此注解用于属性或者setter方法上,用于在反序列化时可以嵌入我们自定义的代码,类似于上面的

 

@JsonSerialize

Property Naming

  • @JsonProperty (also indicates that property is to be included) is used to indicate external property name, name used in data format (JSON or one of other supported data formats)
    • @JsonProperty.value: name to use
    • @JsonProperty.index: physical index to use, if dataformat (other than JSON) is index-based
    • @JsonProperty.defaultValue: textual default value defined as metadata. NOTE: core databind does NOT make any use of this value; it is currently only exposed to extension modules.

Property Inclusion

  • @JsonAutoDetect: class annotation used for overriding property introspection definitions
  • @JsonIgnore: simple annotation to use for ignoring specified properties
  • @JsonIgnoreProperties: per-class annotation to list properties to ignore, or to indicate that any unknown properties are to be ignored.@JsonIgnoreType: per-class annotation to indicate that all properties of annotated type are to be ignored.
    • On serialization, @JsonIgnoreProperties({"prop1", "prop2"}) ignores listed properties
    • On deserialization, @JsonIgnoreProperties(ignoreUnknown=true) ignores properties that don't have getter/setters
  • @JsonInclude: annotation used to define if certain "non-values" (nulls or empty values) should not be included when serializing; can be used on per-property basis as well as default for a class (to be used for all properties of a class)

Deserialization and Serialization details

  • @JsonFormat: general annotation that has per-type behavior; can be used for example to specify format to use when serializing Date/Time values.

 

分享到:
评论

相关推荐

    SpringMVC源码总结(三)mvc:annotation-driven和mvc:message-converters简单介绍

    在Spring MVC框架中,`mvc:annotation-driven`和`mvc:message-converters`是两个非常重要的元素,它们在处理基于注解的控制器和数据转换方面起着关键作用。本篇文章将深入探讨这两个组件的工作原理以及如何在实际...

    SpringMVC源码总结(二)mvc:mvc:annotation-driven背后的那些事

    在Spring MVC框架中,`mvc:annotation-driven`是Spring MVC配置中的一个重要元素,它使得我们的应用能够支持基于注解的控制器、数据绑定、格式化转换器和服务端验证等功能。这篇博客将深入探讨`mvc:annotation-...

    jackson-annotations、jackson-core、jackson-databind

    1. 在Spring MVC配置中添加Jackson的依赖,确保版本与Spring 4兼容,比如使用Jackson 2.9系列。 2. 自定义`WebMvcConfigurerAdapter`并重写`configureMessageConverters`方法,确保包含`MappingJackson2...

    jackson-core-asl-1.9.13+jackson-mapper-asl-1.9.13jar包.

    在开发基于Spring MVC的Web应用时,我们常常会遇到数据传输的问题,特别是在处理RESTful API时,使用`@ResponseBody`注解将Java对象转换为JSON格式返回给客户端。然而,有时候这种转换过程中可能会出现错误,比如...

    jackson-core-asl-1.9.13及jackson-mapper-asl-1.9.13架包.rar

    可用于Spring MVC框架,spring MVC中返回使用@ResponseBody注解返回时,后台没报错,就控制台显示406 Not Acceptable 原因是缺少jackson的包:jackson-core-asl-1.9.2.jar和jackson-mapper-asl-1.9.2.jar

    一个改进版的spring-mvc-showcase

    总的来说,"一个改进版的spring-mvc-showcase"项目展示了如何利用Spring MVC构建一个现代Web应用,并且可能涵盖了许多高级特性,如AOP(面向切面编程)、RESTful API设计、拦截器、数据校验、异常处理等。...

    SPRING MVC3.2案例讲解---配置

    本篇文章将详细讲解如何配置Spring MVC 3.2,以便在实际项目中进行有效应用。 首先,我们需要在项目中添加Spring MVC的依赖。在Maven项目中,可以在pom.xml文件中添加如下依赖: ```xml <groupId>org.spring...

    Spring MVC

    Spring MVC 是Spring框架最重要的的模块之一。它以强大的Spring IoC容器为基础,并充分利用容器的特性来简化它的配置。 commons-logging-1.2.jar ...spring-webmvc-4.0.0.RELEASE.jar standard-1.1.2.jar

    spring mvc集成webservice

    在本示例中,我们将探讨如何将Spring MVC与Web服务(特别是SOAP Web服务)进行集成,以便于在Spring MVC应用中调用或暴露Web服务。 **一、Spring MVC简介** Spring MVC是Spring框架的一部分,它提供了MVC(Model-...

    jackson-core所需的三个包;jackson-databind.jar,jackson-annotations.jar,jackson-core.jar

    在Spring MVC应用中,要正确处理JSON数据,必须确保Content-Type设置正确,并且服务器配置了合适的HTTP消息转换器。同时,利用Jackson的注解可以极大地简化对象与JSON之间的映射,提高开发效率。

    Spring MVC所需jar包

    在 Spring MVC 的开发中,需要用到一系列的 jar 包来支持其功能。这些 jar 包通常包括以下几个核心部分: 1. **Spring 框架核心库**:这是 Spring MVC 的基础,它包含了 IoC(Inversion of Control,控制反转)和 ...

    jackson-core-asl-1.9.13.jar jackson-mapper-asl-1.9.13.ja

    jackson-core-asl-1.9.13.jar jackson-mapper-asl-1.9.13.ja spring mvc时,ajax传输json格式,@ResponseBody, 会出现错误,导入jackson-core-asl-1.9.13+jackson-mapper-asl-1.9.13jar

    jackson-core-asl-1.9.8.jar+jackson-mapper-asl-1.9.8.jar下载

    annotation-driven />`标签在Spring配置中起到了关键作用,它会自动为Spring MVC应用注册必需的转换器和处理器,包括处理JSON的`MappingJackson2HttpMessageConverter`(在较新版本的Spring中,对应的可能是`Jackson2...

    jackson-core-asl-1.9.13+jackson-mapper-asl-1.9.13札包

    在SSH(Spring、Struts、Hibernate)框架的集成应用中,Jackson库经常被用作数据交换的工具,特别是在Spring MVC中,它可以作为视图解析器,将Java对象转换为JSON响应返回给客户端。例如,当开发RESTful API时,使用...

    spring-mvc jar包

    在实际项目中,除了Spring MVC外,我们还需要引入其他的Spring相关jar包,如spring-core、spring-context、spring-beans等,它们共同构成了Spring框架的基础。此外,通常还会使用Spring Data JPA或者MyBatis等持久层...

    spring mvc json&&jackson jquery js

    在Spring MVC应用中,前端页面通常使用JavaScript和jQuery来处理用户交互和动态更新内容。通过AJAX,前端可以异步地向服务器发送请求,获取JSON数据,然后使用jQuery处理并更新DOM。例如,`$.ajax`或`$.getJSON`方法...

    jackson-all-1.9.0.jar,jackson-all-1.9.9.jar,jackson-all-1.9.11.jar

    在Spring MVC中,Jackson库通常通过配置可以无缝集成,使得Controller方法可以直接返回Java对象,而Spring会自动将其转换为JSON响应。 `jackson-all-1.9.x.jar` 文件是Jackson库的旧版本,其中包含所有必要的模块,...

    springMVC3.0.5常用的所有jar包.zip

    在本压缩包 "springMVC3.0.5常用的所有jar包.zip" 中,包含了一系列用于支持 Spring MVC 3.0.5 版本开发的 jar 包。这些 jar 包是构建基于 Spring MVC 的 Web 应用所必需的基础组件,涵盖了从核心容器到视图解析、...

    Spring-mvc-showcase

    1. **Maven 构建系统**:Spring-mvc-showcase 使用 Maven 进行项目构建和管理,通过在 pom.xml 文件中定义依赖关系,可以轻松地集成 Spring MVC 及其相关库,如 Spring Core、Spring Web MVC、Jackson JSON 处理库等...

    jackson-annotations jackson-core jackson-databind

    在Spring MVC框架中,当我们的控制器需要返回JSON格式的数据给前端时,Jackson库就扮演了至关重要的角色。标题提到的"jackson-annotations"、"jackson-core"和"jackson-databind"是Jackson库的核心组成部分,它们...

Global site tag (gtag.js) - Google Analytics