springmvc配置MappingJackson2HttpMessageConverter实现属性驼峰和下划线的转换
来源:互联网 发布:停车位设计软件 编辑:程序博客网 时间:2024/05/17 21:46
v需求
php调用java接口时,因为php那边的属性都是下划线风格,java这边的属性都是驼峰的风格。配置springmvc的json转换,在requestBody的时候(调用对象的set 方法)将java属性name映射成下划线形式 和 请求的参数匹配;在responseBody的时候(调用对象的get方法)将java的属性name也映射成下划线形式。
vMappingJackson2HttpMessageConverter配置<mvc:annotation-driven> <mvc:message-converters> <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> <property name="objectMapper"> <bean class="com.fasterxml.jackson.databind.ObjectMapper"> <!-- 处理responseBody 里面日期类型 --> <!-- <property name="dateFormat"> <bean class="java.text.SimpleDateFormat"> <constructor-arg type="java.lang.String" value="yyyy-MM-dd HH:mm:ss" /> </bean> </property> --> <!-- 为null字段时不显示 --> <property name="serializationInclusion"> <value type="com.fasterxml.jackson.annotation.JsonInclude.Include">NON_NULL</value> </property> <property name="propertyNamingStrategy"> <!--<bean class="com.xxx.serializer.MyPropertyNamingStrategyBase" />--> <bean class="com.fasterxml.jackson.databind.PropertyNamingStrategy.LowerCaseWithUnderscoresStrategy" /> </property> </bean> </property> <property name="supportedMediaTypes"> <list> <value>text/html;charset=UTF-8</value> <value>application/json; charset=UTF-8</value> </list> </property> </bean> </mvc:message-converters> </mvc:annotation-driven>
v 自定义PropertyNamingStrategy
import com.fasterxml.jackson.databind.PropertyNamingStrategy;import com.fasterxml.jackson.databind.cfg.MapperConfig;import com.fasterxml.jackson.databind.introspect.AnnotatedField;import com.fasterxml.jackson.databind.introspect.AnnotatedMethod;import com.fasterxml.jackson.databind.introspect.AnnotatedParameter;import org.apache.commons.lang3.StringUtils;/** * Created by hujunzheng on 2017/6/7. */public class MyPropertyNamingStrategyBase extends PropertyNamingStrategy { @Override public String nameForField(MapperConfig<?> config, AnnotatedField field, String defaultName) { return defaultName; } @Override public String nameForGetterMethod(MapperConfig<?> config, AnnotatedMethod method, String defaultName) { return underscoreName(defaultName); } @Override public String nameForSetterMethod(MapperConfig<?> config, AnnotatedMethod method, String defaultName) { return underscoreName(defaultName); } @Override public String nameForConstructorParameter(MapperConfig<?> config, AnnotatedParameter ctorParam, String defaultName) { return defaultName; } private String underscoreName(String name) { if (StringUtils.isEmpty(name)) { return ""; } StringBuilder result = new StringBuilder(); result.append(name.substring(0, 1).toLowerCase()); for (int i = 1; i < name.length(); ++i) { String s = name.substring(i, i + 1); String slc = s.toLowerCase(); if (!(s.equals(slc))) { result.append("_").append(slc); } else { result.append(s); } } return result.toString(); } private String withoutUnderscoreName(String name) { if (StringUtils.isEmpty(name)) { return ""; } StringBuilder result = new StringBuilder(); result.append(name.substring(0, 1).toLowerCase()); boolean underscore = false; for (int i = 1; i < name.length(); ++i) { String s = name.substring(i, i + 1); if ("_".equals(s)) { underscore = true; continue; } else { if (underscore) s = s.toUpperCase(); underscore = false; } result.append(s); } return result.toString(); }}
阅读全文
1 0
- springmvc配置MappingJackson2HttpMessageConverter实现属性驼峰和下划线的转换
- 下划线和驼峰转换
- 驼峰和下划线命令转换
- Java 驼峰与下划线的属性名互相转换
- Java 驼峰与下划线的属性名互相转换
- myBatis配置实现数据库字段下划线映射到java对象的驼峰式命名属性
- myBatis配置实现数据库字段下划线映射到java对象的驼峰式命名属性
- 字符串的下划线命名和驼峰命名转换
- 字符串的下划线命名和驼峰命名转换
- php 下划线和驼峰相互转换
- js驼峰命名和下划线转换
- 驼峰命名法(CamelCase)和下划线风格(UnderScoreCase)字符串之间的转换工具类
- 驼峰命名法(CamelCase)和下划线风格(UnderScoreCase)字符串之间的转换工具类
- 驼峰命名法(CamelCase)和下划线命名法(UnderScoreCase)字符之间的转换
- 驼峰命名法(CamelCase)和下划线命名法(UnderScoreCase)字符之间的转换
- java 驼峰字符和下划线字符相互转换工具类
- spring jdbc是如何实现驼峰和下划线的自动映射的
- 下划线分隔的字符串,转换为驼峰式字符串
- windows下C++中相对路径与绝对路径 文件路径
- impala 不可轻易更换列类型
- 清华大学C++程序设计基础课程学习笔记
- 利用python库在局域网内传输文件
- 异步调度quartz
- springmvc配置MappingJackson2HttpMessageConverter实现属性驼峰和下划线的转换
- python 列表、字典、集合解析
- QT4.8
- 【不靠谱的征文比赛】幸福的人儿是什么样
- Spring里面的@Repository,@Service,@Controller和@Component
- CodeForces 732D Exams
- 547. Friend Circles
- 十六进制转八进制
- 使用tensorflow:LSTM神经网络预测股票(一)