实体类:
1 import java.io.Serializable; 2 import lombok.AllArgsConstructor; 3 import lombok.Data; 4 import lombok.NoArgsConstructor; 5 6 @Data 7 @AllArgsConstructor 8 @NoArgsConstructor 9 public class User implements Serializable { 10 /** 11 * 12 */ 13 private static final long serialVersionUID = -329066647199569031L; 14 15 private String userName; 16 17 private String orderNo; 18 }
帮助类:
1 import java.io.IOException; 2 3 import com.fasterxml.jackson.annotation.JsonInclude.Include; 4 import com.fasterxml.jackson.core.JsonProcessingException; 5 import com.fasterxml.jackson.databind.ObjectMapper; 6 import com.fasterxml.jackson.databind.PropertyNamingStrategy; 7 8 /** 9 * JSON的驼峰和下划线互转帮助类 10 * 11 * @author yangzhilong 12 * 13 */ 14 public class JsonUtils { 15 16 /** 17 * 将对象的大写转换为下划线加小写,例如:userName-->user_name 18 * 19 * @param object 20 * @return 21 * @throws JsonProcessingException 22 */ 23 public static String toUnderlineJSONString(Object object) throws JsonProcessingException{ 24 ObjectMapper mapper = new ObjectMapper(); 25 mapper.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE); 26 mapper.setSerializationInclusion(Include.NON_NULL); 27 String reqJson = mapper.writeValueAsString(object); 28 return reqJson; 29 } 30 31 /** 32 * 将下划线转换为驼峰的形式,例如:user_name-->userName 33 * 34 * @param json 35 * @param clazz 36 * @return 37 * @throws IOException 38 */ 39 public static <T> T toSnakeObject(String json, Class<T> clazz) throws IOException{ 40 ObjectMapper mapper = new ObjectMapper();
// mapper的configure方法可以设置多种配置(例如:多字段 少字段的处理)
//mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
41 mapper.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE); 42 T reqJson = mapper.readValue(json, clazz); 43 return reqJson; 44 } 45 }
单元测试类:
1 import java.io.IOException; 2 3 import org.junit.Test; 4 5 import com.alibaba.fastjson.JSONObject; 6 import com.fasterxml.jackson.core.JsonProcessingException; 7 8 public class JsonTest { 9 10 @Test 11 public void testToUnderlineJSONString(){ 12 User user = new User("张三", "1111111"); 13 try { 14 String json = JsonUtils.toUnderlineJSONString(user); 15 System.out.println(json); 16 } catch (JsonProcessingException e) { 17 e.printStackTrace(); 18 } 19 } 20 21 @Test 22 public void testToSnakeObject(){ 23 String json = "{\"user_name\":\"张三\",\"order_no\":\"1111111\"}"; 24 try { 25 User user = JsonUtils.toSnakeObject(json, User.class); 26 System.out.println(JSONObject.toJSONString(user)); 27 } catch (IOException e) { 28 e.printStackTrace(); 29 } 30 } 31 }
测试结果:
1 {"user_name":"张三","order_no":"1111111"} 2 3 {"orderNo":"1111111","userName":"张三"}