博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
springmvc配置MappingJackson2HttpMessageConverter实现属性驼峰和下划线的转换
阅读量:5962 次
发布时间:2019-06-19

本文共 3232 字,大约阅读时间需要 10 分钟。

需求

  php调用java接口时,因为php那边的属性都是下划线风格,java这边的属性都是驼峰的风格。配置springmvc的json转换,在requestBody的时候(调用对象的set 方法)将java属性name映射成下划线形式 和 请求的参数匹配;在responseBody的时候(调用对象的get方法)将java的属性name也映射成下划线形式。

MappingJackson2HttpMessageConverter配置

NON_NULL
text/html;charset=UTF-8
application/json; charset=UTF-8

 自定义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(); }}

 

转载地址:http://pcnax.baihongyu.com/

你可能感兴趣的文章
Extjs4.x (MVC)Controller中refs以及Ext.ComponentQuery解析
查看>>
Server-01 How to Find the Remote Desktop Port
查看>>
Java--接口、抽象与继承
查看>>
通过IP判断登录地址
查看>>
Oracle闪回技术
查看>>
利用单壁路由实现vlan间路由
查看>>
hello world
查看>>
CentOS 7 配置yum本地base源和阿里云epel源
查看>>
python 学习导图
查看>>
生成树
查看>>
深入浅出JavaScript (五) 详解Document.write()方法
查看>>
Beta冲刺——day6
查看>>
Comet OJ - Contest #3 题解
查看>>
[网络流24题-9]试题库问题
查看>>
在一个程序中调用另一个程序并且传输数据到选择屏幕执行这个程序
查看>>
HDOJ_ACM_Rescue
查看>>
笔记纪录
查看>>
九、oracle 事务
查看>>
Git - 操作指南
查看>>
正则表达式的贪婪与非贪婪模式
查看>>