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.0</modelVersion>
<groupId>spring.boot.helloworld</groupId>
<artifactId>helloworld</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>helloworld Maven Webapp</name>
<url>http://maven.apache.org</url> <!--
spring boot父节点依赖,引入这个之后相关的引入就不需要加version配置,spring boot
会自动选择最合适的版本进行添加
-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.1.RELEASE</version>
</parent> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
</properties> <dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- fastjson依赖 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.15</version>
</dependency>
</dependencies>
<!--构建节点-->
<build>
<finalName>helloworld</finalName> </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<HttpMessageConverter<?>> 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<HttpMessageConverter<?>> 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

最新文章

  1. LintCode 366 Fibonacci
  2. 如何在mac本上安装android sdk
  3. Median of Two Sorted Arrays
  4. 配置jetty 远程调试
  5. ffmpeg 按时间戳读取文件 -re
  6. poj - 2377 Bad Cowtractors&amp;&amp;poj 2395 Out of Hay(最大生成树)
  7. 《asp.net mvc实战》笔记
  8. -_-#【HTML】同一个标签页打开
  9. 【6】JAVA---地址App小软件(QueryPanel.class)(表现层)
  10. Python基础之 正则表达式指南
  11. poj 2309
  12. 【原创】shadowebdict开发日记:基于linux的简明英汉字典(二)
  13. Android ListView中添加不同的多种布局
  14. Access Logging Tomcat
  15. teamviewer quicksupport 插件(下载)
  16. 补习系列(4)-springboot 参数校验详解
  17. Shell脚本备份数据库(多库)
  18. HDU 1880 魔咒词典 (Hash)
  19. Confluence 6 避免和清理垃圾
  20. Selenium webdriver操作日历控件

热门文章

  1. 浮点优化选项 -ffast-math:极大地提高浮点运算速度【转】
  2. c#反射,委托,事件
  3. 第十三届北航程序设计竞赛决赛网络同步赛 B题 校赛签到(建树 + 打标记)
  4. TopCoder SRM 722 Div1 Problem 600 DominoTiling(简单插头DP)
  5. YACEP相关技术工具服务技巧(上)
  6. 余秋雨的话(与OI无关)
  7. Careercup | Chapter 1
  8. Codeforces 732F. Tourist Reform (Tarjan缩点)
  9. cdq分治解决区间问题
  10. ADO.NET访问Access(文本数据库)数据操作(CRUD)