实体类:

 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的驼峰和下划线互转帮助类的更多相关文章

  1. jackson 常用注解,比如忽略某些属性,驼峰和下划线互转

    一般情况下使用JSON只使用了java对象与字符串的转换,但是,开发APP时候,我们经常使用实体类来做转换:这样,就需要用到注解: Jackson默认是针对get方法来生成JSON字符串的,可以使用注 ...

  2. JS驼峰与下划线互转

    1.下划线转驼峰 function underlineToHump(s){ var a = s.split("_"); var result = a[0]; for(var i=1 ...

  3. 【SCALA】2、驼峰,下划线互转

    1.刚开始写scala,发现确实还是很不熟悉,api以及语法的使用都不是很简洁,这写出来跟java也没差多少... 献丑了 package spark /** * @ProjectName: cutt ...

  4. Java实现递归将嵌套Map里的字段名由驼峰转为下划线

    摘要: 使用Java语言递归地将Map里的字段名由驼峰转下划线.通过此例可以学习如何递归地解析任意嵌套的List-Map容器结构. 难度:初级 概述 在进行多语言混合编程时,由于编程规范的不同, 有时 ...

  5. java驼峰法和下划线法字符串的相互转换

    java驼峰法和下划线法字符串的相互转换 1 import java.util.regex.Matcher; import java.util.regex.Pattern; public class ...

  6. 递归将Map里的字段名由驼峰转为下划线

    导航 定位 概述 算法设计 递归技巧 代码实现 定位 本文适合于想要使用Java递归地将Map里的Key字段名从驼峰转为下划线,或者想了解如何处理任意递归的Map结构的筒鞋. 概述 在进行多语言混合编 ...

  7. $聊一聊"驼峰"和"下划线"——Python re.sub函数详细用法实例讲解

    日常写代码时候会遇到一些字符串替换的操作,比如把一大堆"驼峰"形式的字符串批量转换成下划线形式."驼峰"形式的变量命名风格在Java中很常见,而下划线形式的变量 ...

  8. js字符串驼峰和下划线互相转换

    // 下划线转换驼峰 function toHump(name) { return name.replace(/\_(\w)/g, function(all, letter){ return lett ...

  9. python面向对象双下划线方法与元类

    目录 双下划线方法(__) 元类简介 产生类的两种表现形式 元类的基本使用 元类进阶操作 __new__方法 双下划线方法(__) 面向对象中的双下方法也有一些人称之为是魔法方法,有些双下方法不需要刻 ...

随机推荐

  1. 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 ...

  2. [leetcode]Next Permutation @ Python

    原题地址:https://oj.leetcode.com/problems/next-permutation/ 题意: Implement next permutation, which rearra ...

  3. [leetcode]Palindrome Partitioning II @ Python

    原题地址:https://oj.leetcode.com/problems/palindrome-partitioning-ii/ 题意: Given a string s, partition s  ...

  4. AS 注解处理器 APT Processor MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  5. 网站设计之合理架构CSS

    架构CSS 在当前浏览器普遍支持的前提下,css被我们赋予了前所未有的使命.然而依赖css越多,样式表文件就会变得越大越复杂.与此同时,文件维护和组织的考验也随之而来. (曾几何时)只要一个css文件 ...

  6. C#利用tabControl控件实现多窗体嵌入及关闭

    创建一个主窗体(Formmain).两个副窗体(Form1,Form2);在主窗体中分别添加一个menuStrip控件.tabControl控件,并在menu控件上添加一个主菜单和两个子菜单   继而 ...

  7. Android实现录音的方法(最重要的是对MediaRecorder的试用方法)

    package cn.eoe.record; import java.io.File; import java.io.IOException; import android.app.Activity; ...

  8. SQL 连接操作 及 查询分析

  9. Linux动态链接库的使用

    1.前言 在实际开发过程中,各个模块之间会涉及到一些通用的功能,比如读写文件,查找.排序.为了减少代码的冗余,提高代码的质量,可以将这些通用的部分提取出来,做出公共的模块库.通过动态链接库可以实现多个 ...

  10. 史上最全面的Buffalo WHR-G300N CH v2 刷OpenWrt教程

    Buffalo WHR-G300N CH v2 刷OpenWrt.有两种办法.一种是Windows下刷.一种是在linux下使用tftp刷.Buffalo WHR-G300N-CH v2的openwr ...