spring boot json 首字母大小写问题解决方案

   spring boot默认使用的json解析框架是jackson,对于.net转java的项目来说太坑了,首字母大写的属性会自动转为小写,然后前端就悲剧了,十几个属性的ViewModel增加几个JsonField注解能解决问题,但若有几十上百个属性,那就只能换json框架了,幸好有fastjson能原样输出属性,下面是spring boot 使用fastjson的实施步骤,原文来自https://blog.csdn.net/cjq2013/article/details/76421101。

 

1.spring boot默认使用的json解析框架是jackson,使用fastjson需要配置,首先引入fastjson依赖 
pom.xml配置如下:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0modelVersion> <groupId>spring.boot.helloworldgroupId> <artifactId>helloworldartifactId> <packaging>warpackaging> <version>1.0-SNAPSHOTversion> <name>helloworld Maven Webappname> <url>http://maven.apache.orgurl>  <parent> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-starter-parentartifactId> <version>1.4.1.RELEASEversion> parent> <properties> <project.build.sourceEncoding>UTF-8project.build.sourceEncoding> <java.version>1.8java.version> properties> <dependencies> <dependency> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-starter-webartifactId> dependency>  <dependency> <groupId>com.alibabagroupId> <artifactId>fastjsonartifactId> <version>1.2.15version> dependency> dependencies>  <build> <finalName>helloworldfinalName> build> project> 

 

 

2.配置有两种方式,一种是继承WebMvcConfigurerAdapter重写方法,另一种是@Bean注入第三方的json解析框架。 
(1)继承WebMvcConfigurerAdapter

/**
 * Created by struggle on 2017/7/29.
 */
@SpringBootApplication//指定这是一个Spring boot应用程序
public class App extends WebMvcConfigurerAdapter{ @Override public void configureMessageConverters(List> converters) { super.configureMessageConverters(converters); /* 1.需要先定义一个convert转换消息的对象; 2.添加fastjson的配置信息,比如是否要格式化返回的json数据 3.在convert中添加配置信息 4.将convert添加到converters中 */ //1.定义一个convert转换消息对象 FastJsonHttpMessageConverter fastConverter=new FastJsonHttpMessageConverter(); //2.添加fastjson的配置信息,比如:是否要格式化返回json数据 FastJsonConfig fastJsonConfig=new FastJsonConfig(); fastJsonConfig.setSerializerFeatures( SerializerFeature.PrettyFormat ); fastConverter.setFastJsonConfig(fastJsonConfig); converters.add(fastConverter); } public static void main(String[] args) { /** * 在main方法中启动应用程序 */ SpringApplication.run(App.class,args); } }

(2)使用@Bean注入方式

/**
 * Created by struggle on 2017/7/29.
 */
@SpringBootApplication//指定这是一个Spring boot应用程序
public class App{ @Bean//使用@Bean注入fastJsonHttpMessageConvert public HttpMessageConverters fastJsonHttpMessageConverters(){ //1.需要定义一个Convert转换消息的对象 FastJsonHttpMessageConverter fastConverter=new FastJsonHttpMessageConverter(); //2.添加fastjson的配置信息,比如是否要格式化返回的json数据 // FastJsonConfig fastJsonConfig=new FastJsonConfig(); fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat); //3.在convert中添加配置信息 fastConverter.setFastJsonConfig(fastJsonConfig); HttpMessageConverter converter=fastConverter; return new HttpMessageConverters(converter); } public static void main(String[] args) { /** * 在main方法中启动应用程序 */ SpringApplication.run(App.class,args); } }

 

3.使用上面一种方式即可,项目目录结构如下 
这里写图片描述 
App.java

/**
 * Created by struggle on 2017/7/29.
 */
//extends WebMvcConfigurerAdapter
@SpringBootApplication//指定这是一个Spring boot应用程序
public class App{ // @Override // public void configureMessageConverters(List> converters) { // super.configureMessageConverters(converters); // /* // 1.需要先定义一个convert转换消息的对象; // 2.添加fastjson的配置信息,比如是否要格式化返回的json数据 // 3.在convert中添加配置信息 // 4.将convert添加到converters中 // */ // //1.定义一个convert转换消息对象 // FastJsonHttpMessageConverter fastConverter=new FastJsonHttpMessageConverter(); // //2.添加fastjson的配置信息,比如:是否要格式化返回json数据 // FastJsonConfig fastJsonConfig=new FastJsonConfig(); // fastJsonConfig.setSerializerFeatures( // SerializerFeature.PrettyFormat // ); // fastConverter.setFastJsonConfig(fastJsonConfig); // converters.add(fastConverter); // } @Bean//使用@Bean注入fastJsonHttpMessageConvert public HttpMessageConverters fastJsonHttpMessageConverters(){ //1.需要定义一个Convert转换消息的对象 FastJsonHttpMessageConverter fastConverter=new FastJsonHttpMessageConverter(); //2.添加fastjson的配置信息,比如是否要格式化返回的json数据 // FastJsonConfig fastJsonConfig=new FastJsonConfig(); fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat); //3.在convert中添加配置信息 fastConverter.setFastJsonConfig(fastJsonConfig); HttpMessageConverter converter=fastConverter; return new HttpMessageConverters(converter); } public static void main(String[] args) { /** * 在main方法中启动应用程序 */ SpringApplication.run(App.class,args); } }

 

HelloController.java

@RestController//等价于@Controller和@ResponseBody
public class HelloController { @RequestMapping("/hello")//建立请求映射 public String hello(){ return "hello"; } @RequestMapping("/getUser") public User getUser(){ User user=new User(); user.setName("张三"); user.setPass("123"); user.setCreateTime(new Date()); user.setRemarks("this is remark"); return user; } } 

 

User.java

public class User {
    String name;
    String pass;
    /* 如果不想返回remarks deserialize是否需要序列化属性 */ @JSONField(serialize = false) String remarks; public String getRemarks() { return remarks; } public void setRemarks(String remarks) { this.remarks = remarks; } public Date getCreateTime() { return createTime; } public void setCreateTime(Date createTime) { this.createTime = createTime; } @JSONField(format = "yyyy-MM-dd HH:mm:ss") Date createTime;//创建时间 public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPass() { return pass; } public void setPass(String pass) { this.pass = pass; } }

 

4.在User.java中,可以在属性上加注解 @JSONField(format = “yyyy-MM-dd HH:mm:ss”)格式化日期, @JSONField(serialize = false)属性不序列化,以及其他spring-fastjson注解对解析json 
5.运行App.java类进行测试 
这里写图片描述

访问http://localhost:8080/getUser

这里写图片描述

6.源码百度云网盘地址链接:http://pan.baidu.com/s/1hsIe1RA 密码:ghlz

转载于:https://www.cnblogs.com/yym/p/9008922.html

你可能感兴趣的:(spring boot json 首字母大小写问题解决方案)