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

spring boot json 首字母大小写问题解决方案的更多相关文章

  1. ASP.NET Core中返回 json 数据首字母大小写问题

    ASP.NET Core中返回 json 数据首字母大小写问题 在asp.net core中使用ajax请求动态绑定数据时遇到该问题 后台返回数据字段首字母为定义的大写,返回的数据没有问题 但是在前台 ...

  2. [Go语言]从Docker源码学习Go——init()方法和identifier首字母大小写区分

    init()方法 如果想在一个go文件里,进行一些初始化的工作,可以把代码放到init()方法中. init()方法先被执行. func init() { // initialization of p ...

  3. java string 首字母大小写方法

    String字符串需要进行首字母大小写改写,查询google,就是将首字母截取,转化大小写 + 首字母后面字符串 //首字母小写 public static String captureName(St ...

  4. Java c# 跨语言Json反序列化首字母大小写问题

    C#标准是首字母大写,Java规范是首字母小写,在序列化成Json之后,反序列化会出现反序列化失败的问题.. 从C#反序列化成JavaBean的时候通过如下注解可以直接解决该问题 @JsonNamin ...

  5. Spring getBean 首字母大小写问题

    如果类第一个字母大写第二个小写,那么首字母小写获取bean 如果第一个和第二个字母都是大写的,那个获取bean首字母要大写

  6. FastJson 输出值 首字母大小写问题

    解决方案: 1. 如果你的项目由多个模块且为分布式部署, 则可考虑使用设置System.property 2. 一般只是极少数的代码出现此情况, 那么建议直接在你的单例Service初始化时, 在静态 ...

  7. Spring Boot Json 之 Jackjson Fastjson

    Json 是目前互联网应用使用最为广泛的信息交换格式之一.Spring Boot 内置了 Jackson .Json 在应用中主要体现在以下功能: 序列化 反序列化 字段格式化 验证自动化 目前长用的 ...

  8. fastjson转换对象,属性首字母大小写的问题

    请求Json数据的时候,传递过去的String类型转Json数据的时候经常有首字母是大写的情况,例如"LoginAccount":"02:00:00:62:73:74&q ...

  9. 【Golang】字符串首字母大小写转化

    写在前面 在自动化过程中,我们用得最多的可能就是字符串的处理,熟悉Python的都知道在Python中要让一个字符串的首字母大写直接用capitalize就可以了,但是同样的事情在Golang中没有这 ...

随机推荐

  1. macro expand error

    cat test_macro.c #define TEST_MACRO(b) chip->##b int main(void) { TEST_MACRO(yyy) return 0; } gcc ...

  2. 关于Xcode6 的自定义模板位置

    自定义模板放置位置: Xode6 -> 打开App 后, /Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xc ...

  3. LeetCode OJ-- Distinct Subsequences ** 递推

    https://oj.leetcode.com/problems/distinct-subsequences/ 对于string S 和 T求,T 是 S的几种子串. 首先想到了递归方法,列出递归公式 ...

  4. EventBus 3.0: 入门使用及其使用 完全解析

    前言 EventBus是greenrobot再Android平台发布的以订阅-发布模式为核心的开源库. EventBus翻译过来是事件总线意思.可以这样理解:一个个(event)发送到总线上, 然后E ...

  5. 怎样录制简单GIF动图

    看到视频里的精彩画面,想用动图的形式保存下来,应该如何录制呢,今天就介绍一款小巧实用,操作简单的软件,GifCam 2.0 汉化绿色版.相比其它的录制软件,它是免费无水印又可以在线录制的. 本来学习一 ...

  6. TopCoder SRM 675 Div1 Problem 500 LimitedMemorySeries1(分块)

    题意  给定一个长度不超过$5*10^{6}$的数列和不超过$100$个询问,每次询问这个数列第$k$小的数,返回所有询问的和 内存限制很小,小到不能存下这个数列.(数列以种子的形式给出) 时限$10 ...

  7. 网站优化—mysql explain执行计划

    explain执行计划 简介MySQL调优: 先发现问题(慢查询,profile) 对于使用索引和没有使用索引,了解到索引可以快速去查找数据 了解什么是索引(索引是排好序的快速查找的数据结构) 索引的 ...

  8. JMeter特殊情况二:针对某些请求数据每次请求都是变化的情况

    概要:某些post请求,例如,登录的请求除了有我们再页面上需要输入的一些值(用户名.密码.是否记住密码等)之外,还有其他的参数,例如token等等,而且这些参数不固定,也就是说每一次post请求这些参 ...

  9. Java线程池原理解读

    引言 引用自<阿里巴巴JAVA开发手册> [强制]线程资源必须通过线程池提供,不允许在应用中自行显式创建线程. 说明:使用线程池的好处是减少在创建和销毁线程上所消耗的时间以及系统资源的开销 ...

  10. NOI模拟题4 Problem A: 生成树(mst)

    Solution 我们考虑答案的表达式: \[ ans = \sqrt{\frac{\sum_{i = 1}^{n - 1} (w_i - \overline{w})^2}{n - 1}} \] 其中 ...