JAVA的驼峰和下划线互转帮助类
实体类:
import java.io.Serializable;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor; @Data
@AllArgsConstructor
@NoArgsConstructor
public class User implements Serializable {
/**
*
*/
private static final long serialVersionUID = -329066647199569031L; private String userName; private String orderNo;
}
帮助类:
import java.io.IOException; import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.PropertyNamingStrategy; /**
* JSON的驼峰和下划线互转帮助类
*
* @author yangzhilong
*
*/
public class JsonUtils { /**
* 将对象的大写转换为下划线加小写,例如:userName-->user_name
*
* @param object
* @return
* @throws JsonProcessingException
*/
public static String toUnderlineJSONString(Object object) throws JsonProcessingException{
ObjectMapper mapper = new ObjectMapper();
mapper.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE);
mapper.setSerializationInclusion(Include.NON_NULL);
String reqJson = mapper.writeValueAsString(object);
return reqJson;
} /**
* 将下划线转换为驼峰的形式,例如:user_name-->userName
*
* @param json
* @param clazz
* @return
* @throws IOException
*/
public static <T> T toSnakeObject(String json, Class<T> clazz) throws IOException{
ObjectMapper mapper = new ObjectMapper();
// mapper的configure方法可以设置多种配置(例如:多字段 少字段的处理)
//mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
mapper.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE);
T reqJson = mapper.readValue(json, clazz);
return reqJson;
}
}
单元测试类:
import java.io.IOException; import org.junit.Test; import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.core.JsonProcessingException; public class JsonTest { @Test
public void testToUnderlineJSONString(){
User user = new User("张三", "1111111");
try {
String json = JsonUtils.toUnderlineJSONString(user);
System.out.println(json);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
} @Test
public void testToSnakeObject(){
String json = "{\"user_name\":\"张三\",\"order_no\":\"1111111\"}";
try {
User user = JsonUtils.toSnakeObject(json, User.class);
System.out.println(JSONObject.toJSONString(user));
} catch (IOException e) {
e.printStackTrace();
}
}
}
测试结果:
{"user_name":"张三","order_no":"1111111"}
{"orderNo":"1111111","userName":"张三"}
JAVA的驼峰和下划线互转帮助类的更多相关文章
- jackson 常用注解,比如忽略某些属性,驼峰和下划线互转
一般情况下使用JSON只使用了java对象与字符串的转换,但是,开发APP时候,我们经常使用实体类来做转换:这样,就需要用到注解: Jackson默认是针对get方法来生成JSON字符串的,可以使用注 ...
- JS驼峰与下划线互转
1.下划线转驼峰 function underlineToHump(s){ var a = s.split("_"); var result = a[0]; for(var i=1 ...
- 【SCALA】2、驼峰,下划线互转
1.刚开始写scala,发现确实还是很不熟悉,api以及语法的使用都不是很简洁,这写出来跟java也没差多少... 献丑了 package spark /** * @ProjectName: cutt ...
- Java实现递归将嵌套Map里的字段名由驼峰转为下划线
摘要: 使用Java语言递归地将Map里的字段名由驼峰转下划线.通过此例可以学习如何递归地解析任意嵌套的List-Map容器结构. 难度:初级 概述 在进行多语言混合编程时,由于编程规范的不同, 有时 ...
- java驼峰法和下划线法字符串的相互转换
java驼峰法和下划线法字符串的相互转换 1 import java.util.regex.Matcher; import java.util.regex.Pattern; public class ...
- 递归将Map里的字段名由驼峰转为下划线
导航 定位 概述 算法设计 递归技巧 代码实现 定位 本文适合于想要使用Java递归地将Map里的Key字段名从驼峰转为下划线,或者想了解如何处理任意递归的Map结构的筒鞋. 概述 在进行多语言混合编 ...
- $聊一聊"驼峰"和"下划线"——Python re.sub函数详细用法实例讲解
日常写代码时候会遇到一些字符串替换的操作,比如把一大堆"驼峰"形式的字符串批量转换成下划线形式."驼峰"形式的变量命名风格在Java中很常见,而下划线形式的变量 ...
- js字符串驼峰和下划线互相转换
// 下划线转换驼峰 function toHump(name) { return name.replace(/\_(\w)/g, function(all, letter){ return lett ...
- python面向对象双下划线方法与元类
目录 双下划线方法(__) 元类简介 产生类的两种表现形式 元类的基本使用 元类进阶操作 __new__方法 双下划线方法(__) 面向对象中的双下方法也有一些人称之为是魔法方法,有些双下方法不需要刻 ...
随机推荐
- nfd指令的详细说明
在eterm上执行NFD:SHAPEK/CA*OW指令,返回如下: LN CXR OW RT FBC/TC RBD MIN/MAX TRVDATE R 01 CA 450.00 U U 00D/00D ...
- [leetcode]Next Permutation @ Python
原题地址:https://oj.leetcode.com/problems/next-permutation/ 题意: Implement next permutation, which rearra ...
- [leetcode]Palindrome Partitioning II @ Python
原题地址:https://oj.leetcode.com/problems/palindrome-partitioning-ii/ 题意: Given a string s, partition s ...
- AS 注解处理器 APT Processor MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- 网站设计之合理架构CSS
架构CSS 在当前浏览器普遍支持的前提下,css被我们赋予了前所未有的使命.然而依赖css越多,样式表文件就会变得越大越复杂.与此同时,文件维护和组织的考验也随之而来. (曾几何时)只要一个css文件 ...
- C#利用tabControl控件实现多窗体嵌入及关闭
创建一个主窗体(Formmain).两个副窗体(Form1,Form2);在主窗体中分别添加一个menuStrip控件.tabControl控件,并在menu控件上添加一个主菜单和两个子菜单 继而 ...
- Android实现录音的方法(最重要的是对MediaRecorder的试用方法)
package cn.eoe.record; import java.io.File; import java.io.IOException; import android.app.Activity; ...
- SQL 连接操作 及 查询分析
- Linux动态链接库的使用
1.前言 在实际开发过程中,各个模块之间会涉及到一些通用的功能,比如读写文件,查找.排序.为了减少代码的冗余,提高代码的质量,可以将这些通用的部分提取出来,做出公共的模块库.通过动态链接库可以实现多个 ...
- 史上最全面的Buffalo WHR-G300N CH v2 刷OpenWrt教程
Buffalo WHR-G300N CH v2 刷OpenWrt.有两种办法.一种是Windows下刷.一种是在linux下使用tftp刷.Buffalo WHR-G300N-CH v2的openwr ...