博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JSON工具类
阅读量:6841 次
发布时间:2019-06-26

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

hot3.png

在日常工作中,发现这么一个小问题,做后台开发,给app返回的一个实体类,属性是有大小写区分的。但实际返回的时候却全都是小写的。而给PC返回的时候就都是有大小写区分的。

这个是spring跳转的时候跟自动转换了。

我们可以使用一套json的工具类,进行强制转换

package com.minxin.me.backstage.commons;import java.io.IOException;import java.util.Date;import java.util.HashMap;import java.util.List;import java.util.Map;import javax.servlet.http.HttpServletResponse;import net.sf.ezmorph.object.DateMorpher;import net.sf.json.JSONArray;import net.sf.json.JSONObject;import net.sf.json.JsonConfig;import net.sf.json.util.CycleDetectionStrategy;import net.sf.json.util.JSONUtils;/**  * 

Title: Json工具类

*/public class JsonUtil{ public static void renderJSON(HttpServletResponse res, String s) { render(res, s, "application/json;charset=utf-8"); } private static void render(HttpServletResponse res, String s, String contextType) { try { res.setHeader("Pragma", "no-cache"); res.setHeader("Cache-Control", "no-cache"); res.setDateHeader("Expires", 0); res.setContentType(contextType); res.getWriter().write(s); } catch (IOException e) { e.printStackTrace(); } finally { try { res.flushBuffer(); } catch (IOException e) { e.printStackTrace(); } } } /** * * 将java对象转换成json字符串 * * @param javaObj * * @return */ public static String getJsonString4JavaPOJO(Object javaObj) { JSONObject json; json = JSONObject.fromObject(javaObj); return json.toString(); } /** * * 将java对象转换成json字符串,并设定日期格式 * */ public static String getJsonString4JavaPOJO(Object javaObj,String dataFormat) { JSONObject json; JsonConfig jsonConfig = configJson(dataFormat); json = JSONObject.fromObject(javaObj, jsonConfig); return json.toString(); } /** * * 将java对象转换成json字符串,并设定日期格式 * */ public static String getJsonArrayString4JavaPOJO(Object javaObj,String dataFormat) { JSONArray json; JsonConfig jsonConfig = configJson("yyyy-MM-dd HH:mm:ss"); json = JSONArray.fromObject(javaObj, jsonConfig); return json.toString(); } @SuppressWarnings("rawtypes") public static JSONObject objectcollect2json(List list, int total) { Map
map = new HashMap
(); map.put("total", total); map.put("rows", list); return JSONObject.fromObject(map); } /** * * JSON 时间解析器具 * * @param datePattern * * @return */ public static JsonConfig configJson(String datePattern) { JsonConfig jsonConfig = new JsonConfig(); jsonConfig.setExcludes(new String[] { "" }); jsonConfig.setIgnoreDefaultExcludes(false); jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT); jsonConfig.registerJsonValueProcessor(Date.class,new DateJsonValueProcessor(datePattern)); return jsonConfig; } /** * * * * @param excludes * * @param datePattern * * @return */ public static JsonConfig configJson(String[] excludes, String datePattern) { JsonConfig jsonConfig = new JsonConfig(); jsonConfig.setExcludes(excludes); jsonConfig.setIgnoreDefaultExcludes(false); jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT); jsonConfig.registerJsonValueProcessor(Date.class, new DateJsonValueProcessor(datePattern)); return jsonConfig; } /** * *

* Title: *

*

* Description: 从一个JSON 对象字符格式中得到一个java对象 *

* * @author Robin * @param jsonString * @param pojoCalss * @return */ @SuppressWarnings("rawtypes") public static Object getObject4JsonString(String jsonString, Class pojoCalss) { Object pojo = null; try { JSONObject jsonObject = JSONObject.fromObject(jsonString); pojo = JSONObject.toBean(jsonObject, pojoCalss); } catch (Exception e) { e.printStackTrace(); } return pojo; } /** * 将json字符串转换成List
对象,处理日期类型 */ @SuppressWarnings({ "unchecked", "rawtypes" }) public static
List
jsonToList(String json,Class clazz,String[] datePattern,Map classMap){ JSONArray jsonArray = JSONArray.fromObject(json); JsonConfig jsonConfig = new JsonConfig();//参数设置 jsonConfig.setRootClass(clazz);//设置array中的对象类型 jsonConfig.setClassMap(classMap); String[] dateFormats = new String[] {"yyyy-MM-dd HH:mm:ss"}; JSONUtils.getMorpherRegistry().registerMorpher(new DateMorpher(dateFormats)); //将数组转换成T类型的集合 List
list = (List
)JSONArray.toCollection(jsonArray, jsonConfig); return list; } /** * 将json字符串转换成List
对象 */ @SuppressWarnings({ "unchecked", "rawtypes" }) public static
List
jsonToList(String json,Class clazz){ JSONArray jsonArray = JSONArray.fromObject(json); JsonConfig jsonConfig = new JsonConfig();//参数设置 jsonConfig.setRootClass(clazz);//设置array中的对象类型 //将数组转换成T类型的集合 List
list = (List
)JSONArray.toCollection(jsonArray, jsonConfig); return list; }}
@RequestMapping(value = "/fdsfr_pc")	@ResponseBody	public JxNewOpenCGResponse jsddregister(OpenPcCGRequest request, HttpServletResponse httpServletResponse) {		logger.info("PC江西开户开始:" + request);		JxNewOpenCGResponse response = new JxNewOpenCGResponse();		// 对tokenid进行验证		    各种验证		}		logger.info("开户响应参数:",response.toString());		JsonUtil.renderJSON(httpServletResponse, JsonUtil.getJsonString4JavaPOJO(response));		return null;	}

使用上述方法,直接使用renderJSON方法,就可以将response对象 已大小写有区别的方式返回。

转载于:https://my.oschina.net/u/2543341/blog/847181

你可能感兴趣的文章
MyEclipse中的报表工具(上)
查看>>
复数类的实现
查看>>
mac 系统下 php生成目录,移动保存文件问题
查看>>
我的友情链接
查看>>
关于Java的相关基础信息
查看>>
如何Json序列化对象的部分属性
查看>>
java第七天(this关键字、构造器、static静态关键字、单例模式)
查看>>
Apache静态编译和动态编译详解
查看>>
spring boot之统一异常处理
查看>>
电邮靠谱指南
查看>>
Ural 1014-The Product of Digits
查看>>
Ubuntu安装JDK
查看>>
升级到 Ubuntu 12.04(LTS)
查看>>
C++基础语法总结
查看>>
ubuntu配置ftp服务器
查看>>
IT人士 不能一辈子靠技术生存
查看>>
我的友情链接
查看>>
Tomcat中server.xml参数说明
查看>>
SCCM2007 R2的部署前准备,SCCM系列之一
查看>>
利用mysql的binlog恢复数据
查看>>