首先:案例是model里的属性名大写,http response时json默认变成小写开头,和model属性不一致。

例子:

model为:
class User{private String NAME;private int AGE;getter 和 setter...
}http 请求后响应的json为:
{"name":"张三","age":20
}业务需求json为:
{"NAME":"张三","AGE":20
}

可行的解决方案:

网上搜了好多,大部分都是在属性上添加@JsonProperty("XXX"),但是这里就又出现了个问题,转json后会有两个同名但大小写不一样的属性;? 就又去搜索,说是在getter方法上添加@JsonProperty("XXX"),解决了,但是字段少没问题,咱每个实体model上添加下,如果字段多了呢?实体多了呢?

完美的解决方案:

本人自己推敲的,分享给大家,好用就用,不好用请忽略,当然肯定有其他更好的,有知道的请文末留言告知博主,非常感谢?

下面上方法代码:

响应json前将对象传入此方法即可

    /*** 对象转json时属性变大写** @param entity* @return*/public static Map<String,Object> object2UpperCase(Object entity){Map<String,Object> res = Maps.newHashMap();if (null==entity){return res;}//将对象的属性转化为大写String json = JacksonUtil.bean2Json(entity);Map<String,Object> map = JacksonUtil.json2Map(json,String.class,Object.class);if (null!=map && !map.isEmpty()){for(Map.Entry<String,Object> entry:map.entrySet()){/*** TODO-关键在这里根据业务需要转大小写*/res.put(entry.getKey().toUpperCase(),entry.getValue());}}return res;}
JacksonUtil.java json转化工具类
package com.ww.common.json;import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.core.JsonFactory;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.*;import java.io.IOException;
import java.io.StringReader;
import java.io.StringWriter;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;/*** json转化工具* @author Ace Lee* */
public  class JacksonUtil {private static final ObjectMapper MAPPER = new ObjectMapper();static {//MAPPER.configure(Feature.ALLOW_UNQUOTED_FIELD_NAMES, false);MAPPER.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES,false);MAPPER.configure(JsonParser.Feature.ALLOW_UNQUOTED_CONTROL_CHARS, true);MAPPER.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES,true);}private static final JsonFactory JSONFACTORY = new JsonFactory();/*** 把json参数转换成对应Vo* <B>第二个参数请使用  Class ,比如JacksonUtil.json2Bean("{\"name\":\"0000\",\"age\":456}", Car.class);</B>* @param json* @param valueTypeRef* @return*/public static <T> T json2Bean(String json, TypeReference<T> valueTypeRef) {T rtn =null;try {rtn =     MAPPER.readValue(json, valueTypeRef);} catch (JsonParseException e) {throw new RuntimeException(e);} catch (JsonMappingException e) {throw new RuntimeException(e);} catch (IOException e) {throw new RuntimeException(e);}return rtn;}public static <T> T json2Bean(String json, Class<T>  cls) {T rtn =null;try {rtn =  MAPPER.readValue(json, cls);} catch (JsonParseException e) {throw new RuntimeException(e);} catch (JsonMappingException e) {throw new RuntimeException(e);} catch (IOException e) {throw new RuntimeException(e);}return rtn;}/*** 转换vo 为 json*/public static String bean2Json(Object o) {StringWriter sw = new StringWriter();JsonGenerator jsonGenerator = null;try {jsonGenerator = JSONFACTORY.createJsonGenerator(sw);MAPPER.writeValue(jsonGenerator, o);return sw.toString();} catch (Exception e) {throw new  RuntimeException(e);//return null;} finally {if (jsonGenerator != null) {try {jsonGenerator.close();} catch (Exception e) {throw  new RuntimeException(e);}}}}/*** 转换vo 为 json*/public static String bean2Json(Object o,ObjectMapper mapper) {StringWriter sw = new StringWriter();JsonGenerator jsonGenerator = null;try {jsonGenerator = JSONFACTORY.createJsonGenerator(sw);mapper.writeValue(jsonGenerator, o);return sw.toString();} catch (Exception e) {throw new  RuntimeException(e);//return null;} finally {if (jsonGenerator != null) {try {jsonGenerator.close();} catch (Exception e) {throw  new RuntimeException(e);}}}}/*** 转换vo 为 json,属性为null不被序列化*/public static String bean2JsonWithoutNull(Object o) {StringWriter sw = new StringWriter();JsonGenerator jsonGenerator = null;ObjectMapper mapper=new ObjectMapper();mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);try {jsonGenerator = JSONFACTORY.createJsonGenerator(sw);mapper.writeValue(jsonGenerator, o);return sw.toString();} catch (Exception e) {throw new  RuntimeException(e);//return null;} finally {if (jsonGenerator != null) {try {jsonGenerator.close();} catch (Exception e) {throw  new RuntimeException(e);}}}}/*** 转换Json String 为 HashMap*/@SuppressWarnings("unchecked")public static Map<String, Object> json2Map(String json,boolean collToString) {try {Map<String, Object> map = MAPPER.readValue(json, HashMap.class);if (collToString) {for (Map.Entry<String, Object> entry : map.entrySet()) {if (entry.getValue() instanceof Collection|| entry.getValue() instanceof Map) {entry.setValue(bean2Json(entry.getValue()));}}}return map;} catch (Exception e) {//return null;throw new RuntimeException(e);}}/*** json String转换为Map* @author dingyiming@chinasofti.com* @date 2016年1月5日 下午9:12:06* @param json* @param clk - key的类型* @param clv - value的类型* @return * @description*/public static <K,V> Map<K, V> json2Map(String json,Class<K> clk,Class<V> clv) {try {JavaType javaType = MAPPER.getTypeFactory().constructMapType(Map.class, clk, clv);Map<K, V> map = MAPPER.readValue(json, javaType);return map;} catch (Exception e) {//return null;throw new RuntimeException(e);}} /*** json String转换为ConcurrentMap* @author dingyiming@chinasofti.com* @date 2016年1月5日 下午9:12:06* @param json* @param clk - key的类型* @param clv - value的类型* @return * @description*/public static <K,V> ConcurrentMap<K, V> json2ConMap(String json,Class<K> clk,Class<V> clv) {try {JavaType javaType = MAPPER.getTypeFactory().constructMapType(ConcurrentHashMap.class, clk, clv);ConcurrentMap<K, V> map = MAPPER.readValue(json, javaType);return map;} catch (Exception e) {//return null;throw new RuntimeException(e);}}@SuppressWarnings("serial")public static class jsonParseException extends Exception {public jsonParseException(String message) {super(message);} }/*** List 转换成json* * @param list* @return*/public static String list2Json(List<Map<String, String>> list) {JsonGenerator jsonGenerator = null;StringWriter sw = new StringWriter();try {jsonGenerator = JSONFACTORY.createJsonGenerator(sw);new ObjectMapper().writeValue(jsonGenerator, list);jsonGenerator.flush();return sw.toString();} catch (Exception e) {//return null;throw new  RuntimeException(e);} finally {if (jsonGenerator != null) {try {jsonGenerator.flush();jsonGenerator.close();} catch (Exception e) {//e.printStackTrace();throw new  RuntimeException(e);}}}}/*** json 转List* * @param json* @return*/@SuppressWarnings("unchecked")public static List<Map<String, String>> json2List(String json) {try {if (json != null && !"".equals(json.trim())) {JsonParser jsonParse = JSONFACTORY.createJsonParser(new StringReader(json));ArrayList<Map<String, String>> arrayList = (ArrayList<Map<String, String>>) new ObjectMapper().readValue(jsonParse, ArrayList.class);return arrayList;} else {return null;}} catch (Exception e) {//return null;throw  new RuntimeException(e);}}// 测试方法public static void main(String[] args) {
//      User user = new User();
//      user.setId(1);
//      user.setUsername("张小三");
//      user.setAddress("海南");
//      user.setPhone("010");
//
//      User user2 = new User();
//      user2.setId(2);
//      user2.setUsername("李小璐");
//      user2.setAddress("天津");
//      user2.setPhone("8888888");
//
//      List<User> list = new ArrayList<User>();
//      list.add(user);
//      list.add(user2);
//
//       String str = bean2Json(user);
//       bean2Json(list);
//       System.out.println(str);
//
//       String json =
//       "{\"address\":\"拾金路\",\"id\":1,\"username\":\"张小宁\",\"phone\":123456789}";
//       User u = (User)json2Bean(json,new TypeReference<User>() {
//        });
//       System.out.println(u);String str="{\"naturalPerson\":{\"queryOrangeScoreDetail\":{\"acctLevel\":null,\"behavPref\":null,\"creditHis\":null,\"mobileNo\":null,\"orangeScore\":null,\"repayCap\":null,\"socialRela\":null,\"updatedAt\":null}}}";Map<String, Object> map = JacksonUtil.json2Map(str, String.class, Object.class);System.out.println(map);}static class   User {private int id;private String username;private String address;private String phone;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}public String getPhone() {return phone;}public void setPhone(String phone) {this.phone = phone;}@Overridepublic String toString() {return "id: " + id + " username: " + username + " address: " + address + " phone: " + phone;}}}

另附上jackson的pom依赖

注意三个版本号必须保持一致

        <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind --><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.9.3</version></dependency><!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core --><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-core</artifactId><version>2.9.3</version></dependency><!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-annotations --><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-annotations</artifactId><version>2.9.3</version></dependency>

有更好的方案,欢迎留言,再次感谢!

响应对象转json时属性名大小写问题完美解决相关推荐

  1. fastjson将对象转为json时属性名首字母会默认小写,如何自定义

    Java对象属性名 private String SrOrder; 得到的json为srOrder而不是SrOrder,而我们想要SrOrder这个key 只需要在属性名上加上@JSONField(n ...

  2. 对象转JSON时属性丢失

    在fastjson下将对象转json时会丢失部分属性的情况,出现这种情况的问题原因是由于属性命名不符合规范导致,比如:uId,一个字母后面紧跟着一个大写字母,导致反射get/set方法时会出现连续两个 ...

  3. Java对象转JSON时如何动态的增删改查属性

    1. 前言 日常开发中少不了 JSON 处理,少不了需要在 JSON 中添加额外字段或者删除特定字段的需求.今天我们就使用Jackson类库来实现这个功能. 2. JSON 字符串增加额外字段 假如我 ...

  4. 转json_Java对象转JSON时如何动态的增删改查属性

    1. 前言 日常开发中少不了 JSON 处理,少不了需要在 JSON 中添加额外字段或者删除特定字段的需求.今天我们就使用Jackson类库来实现这个功能. 2. JSON 字符串增加额外字段 假如我 ...

  5. 【关于js数组对象一道题】将数组对象中的英文属性名替换为中文属性名

    将数组对象中的英文属性名替换为中文属性名 const arr = [{name: '张三', age: 18, address: '湖北'}, {name: '李四', age: 18, addres ...

  6. android 生成泛型对象,java android解析多层含有泛型对象的json数据获取不到泛型类型解析失败解决办法...

    ####问题描述 * java 解析多层含有泛型对象的json数据获取不到泛型类型 * 如果将泛型改成实际的类型就能正常解析 * 如果不改成实际的类型泛型数据被解析成com.google.gson.i ...

  7. springboot-数据库字段和实体类属性名不对应如何解决?

    springboot-数据库字段和实体类属性名不对应如何解决? 我们可以采用:ResultMap结果集映射 来解决这个问题如下: <resultMap id="UserMap" ...

  8. vmware安装没有足够权限 VMware安装时一直提示没权限完美解决

    vmware安装没有足够权限 VMware安装时一直提示没权限完美解决 1.在控制面板\程序\程序和功能删除vmare 2.删除C:\ProgramData\VMware 3.删除C:\Program ...

  9. js 对象动态添加/设置属性名和属性值

    访问对象属性一共有两种方法:点获取法和方括号获取法. 有一个对象 Obj = {"Name":"xiaoming","AGE":" ...

最新文章

  1. 我理解的 iOS 与 Android 的区别
  2. mysql adodb_关于从MySQL转向ADODB的方法
  3. [VMware WorkStation]虚拟机网络
  4. 作者:房毓菲(1990-),女,就职于国家信息中心信息化研究部,中国智慧城市发展研究中心政策研究组副组长。...
  5. 为什么 Linux Mint 比 Ubuntu好?
  6. jq往字符串中插入_jq: dom-插入
  7. 【模拟】牛客网:顺时打印矩阵
  8. 【HDOJ7059】Counting Stars(线段树,区间加,乘,标记)
  9. 详解Python中re.sub
  10. 开源同步文件软件对比
  11. Swift 开源项目汇总
  12. 【Linux】 - Linux中查看命令文档的命令
  13. 光纤熔接机日常使用说明
  14. 重定向和转发的区别+使用情景
  15. 模式识别的概念、方法及应用
  16. 视频教程-Kali Linux渗透测试基础入门到进阶实战全程课-渗透测试
  17. hdl语言哪种语言类似c,Verilog HDL笔记
  18. 深入浅出,五次课程,带您进入数据分析的世界
  19. Windows10 电脑上配置 Docker 环境
  20. Bellman算法和SPFA算法

热门文章

  1. 腐蚀rust服务器命令_腐蚀Rust游戏指令大全 全游戏指令一览
  2. 安装Chrome失败
  3. xml文件导入wps_怎么用wpsExcel表打开xml文档
  4. Android Studio 设置打开layout.xml文件的默认视图
  5. 画E-R图·数据库笔记(四)
  6. 华为p6 android4.4,华为P6终于品尝到了安卓4.4.2 可惜……
  7. 微信网站被误封,不知道为何被封,站长认证一直失败该如何解决?
  8. 美国访问学者申请签证存款证明相关事宜
  9. 你想了解的前端知识都在这里了
  10. keil无法选择单片机类型的问题