后端将java对象传递给前端的时候json自定义格式

与前端交互的时候,所有时间的字段,直接传递了时间戳,刚开始前端希望我改好格式给她.因为忙,我以时间戳比较准确,比较通用,你需要什么格式的日期类型,你可以自己转成对应的格式,

前端不负所望把我给她的时间戳改成了她想要的数据,但是人家要固定格式的日期类型不过分,我为什么就不能给他了,需求明明很简单的,

在任务不忙的时候,我把这个问题处理了一下:

描述:

 对象中的日期类型在传递给前端的时候自定义格式(捎带了一个问题,就是比如数据库中存有些数据是Integer类型,对应了一些含义,一并处理)

查询出来的对象: page(一个对象数组)

失败的方法:

com.alibaba.fastjson.JSONObject

     .toJSONStringWithDateFormat(page,format);

使用阿里的fastjson包的toJSONStringWithDateFormat方法,自定义格式,format就是对应的格式,如:yyyy-MM-dd

失败原因:

前端要的是对象,.虽然日期转成是成功的,但是把page再次放到json中,该page成了一个字符串,前端需要把合格字符串转成对象才可以用

失败!

成功的方法;

我觉得肯定有比较优雅的方法,但是我下午并没有找到,就把这个比较累赘的方式简单描述一下:

自己一边脑补,一边百度,思路就是对象可以转map吗.转的时候处理一下数据,反正map和对象传值效果是一样的

使用

com.fasterxml.jackson.databind.ObjectMapper类

该类如果在spingmvc中应该可以直接注入,我在service层使用.只能new一个了,

	List list = new ArrayList<>();
		for (DeliveryOperateEntity deliveryOperateEntity : page) {
			objectMapper.setDateFormat(CommonDateUtil.SDF_1);
			Map map = objectMapper.convertValue(deliveryOperateEntity, Map.class);
			map.put("pcyes", deliveryOperateEntity.getPcyes() == 1 ?"已派车":"未派车");
			map.put("pszhsh", deliveryOperateEntity.getPszhsh() == 1 ?"假日运达(1)":"平日运达(0)");
			list.add(map);
		}
因为是一个集合.我遍历的时候,一并将页面显示与数据库不对应的另两个字段给改了

感觉明显可以更优雅,但是水平有限,先这样处理,以后有更好的方式了再改正.

结论:能解决问题的就是好的,处理后给前端,什么都不用处理,直接渲染数据就好了








猜你喜欢

转载自blog.csdn.net/alan_waker/article/details/79210437