-
【java框架】SpringMVC(4) -- JSON相关的数据返回
项目中我们经常会使用到JSON的数据格式,这里回顾了一下JSON相关的知识点。对日常使用到的JSON工具做一些简单的补充。
1.JSON工具
1.1.fastjson工具包
在实际项目中我们经常会使用alibabba的fastjson来替代jackson的jar包,因为fastjson已经集成了jackson的功能,用于前台返回json string或者是JSON和Object Java对象
的互相转换都有了非常灵活好用的API支持。
maven依赖的引入:
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.60</version> </dependency>
1.2.ObjectMapper类
ObjectMapper类是jackson包中的一个用于将java实体类转为json的String字符串进行输出的实用类。
这里主要使用了其中的writeValueAsString方法。
@RestController @RequestMapping("/user") public class UserController { @RequestMapping("/json") public String jsonStr() throws JsonProcessingException { ObjectMapper mapper = new ObjectMapper(); User user = new User("枫夜Alex", 5, "男"); String value = mapper.writeValueAsString(user); return value; } @RequestMapping("/date") public String dateJsonStr() throws JsonProcessingException { ObjectMapper mapper = new ObjectMapper(); //不使用时间戳的方式 mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false); //自定义日期格式对象 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //指定日期格式 mapper.setDateFormat(sdf); Date date = new Date(); String value = mapper.writeValueAsString(date); return value; } @RequestMapping("/dateutil") public String jsonUtil(){ ObjectMapper mapper = new ObjectMapper(); Date date = new Date(); String value = JsonUtils.getJson(date); return value; } }
封装了一个JsonUtils类进行Date格式化转换:
public class JsonUtils { public static String getJson(Object object) { return getJson(object,"yyyy-MM-dd HH:mm:ss"); } public static String getJson(Object object,String dateFormat) { ObjectMapper mapper = new ObjectMapper(); //不使用时间差的方式 mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false); //自定义日期格式对象 SimpleDateFormat sdf = new SimpleDateFormat(dateFormat); //指定日期格式 mapper.setDateFormat(sdf); try { return mapper.writeValueAsString(object); } catch (JsonProcessingException e) { e.printStackTrace(); } return null; } }
最后测试一下前端输出:
1.3.对象与JSON的互转
这里主要是使用到fastjson的API,比较简单,直接上代码:
@SpringBootTest @RunWith(SpringJUnit4ClassRunner.class) public class JsonDemoApplicationTests { @Test public void contextLoads() { //创建一个对象 User user1 = new User("枫夜1号", 3, "男"); User user2 = new User("枫夜2号", 3, "男"); User user3 = new User("枫夜3号", 3, "男"); User user4 = new User("枫夜4号", 3, "男"); List<User> list = new ArrayList<User>(); list.add(user1); list.add(user2); list.add(user3); list.add(user4); System.out.println("*******Java对象 转 JSON字符串*******"); String str1 = JSON.toJSONString(list); System.out.println("JSON.toJSONString(list)==>"+str1); String str2 = JSON.toJSONString(user1); System.out.println("JSON.toJSONString(user1)==>"+str2); System.out.println("\n****** JSON字符串 转 Java对象*******"); User jp_user1=JSON.parseObject(str2,User.class); System.out.println("JSON.parseObject(str2,User.class)==>"+jp_user1); System.out.println("\n****** Java对象 转 JSON对象 ******"); JSONObject object = (JSONObject)JSON.toJSON(user2); System.out.println("(JSONObject) JSON.toJSON(user2)==>"+object.getString("name")); System.out.println("\n****** JSON对象 转 Java对象 ******"); User user = JSON.toJavaObject(object, User.class); System.out.println("JSON.toJavaObject(jsonObject1, User.class)==>"+user); } }
出处:https://www.cnblogs.com/yif0118/p/15028358.html
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
SQL Server -- 解决存储过程传入参数作为s
关于JS定时器的整理
JS中使用Promise.all控制所有的异步请求都完
js中字符串的方法
import-local执行流程与node模块路径解析流程
检测数据类型的四种方法
js中数组的方法,32种方法
前端操作方法
数据类型
window.localStorage.setItem 和 localStorage.setIte
如何完美解决前端数字计算精度丢失与数