引入Gson 依赖
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.6</version>
</dependency>
1、Json 字符串转对象
@Test
void jsonTest(){
// json 字符串
String userJson = "{\"id\":1,"+"\"name\":\"张三\","+"\"age\":19,"+"\"date\":\"2021-06-20\"}";
// 直接转换
User user = new Gson().fromJson(userJson, new TypeToken<User>() {
}.getType());
System.out.println("user:" + user);
}
以上是最常见的转换方式,大家仔细观察会发现在 Json 串中还存在一个 Date 时间类型的数据,我们并为对此时间做任何处理,但小编强烈建议在处理时间类型的数据时格式化日期,以确保向MySQL数据库中插入符合要求的时间数据。
正确的方式
@Test
void jsonTest(){
Gson gson = new GsonBuilder()
.setDateFormat("yyyy-MM-dd HH:mm:ss")
.create();
// json 字符串
String userJson = "{\"id\":1,"+"\"name\":\"张三\","+"\"age\":19,"+"\"date\":\"2021-06-20 14:12:12\"}";
// 转换
User user = gson.fromJson(userJson, new TypeToken<User>() {
}.getType());
System.out.println("user:" + user);
}
2、Map集合转对象
这里在转换前需要先使用 toJson() 方法将Map 转换为Json字符串,千万不要使用 toString() 处理,让我们一起看看它们打印出来的结果有什么区别。
toString():{date=2021-06-20 11:20:29, name=张三, id=1}
toJson():{"date":"2021-06-20 11:20:29","name":"张三","id":1}
@Test
void mapTest() {
Gson gson = new GsonBuilder()
.setDateFormat("yyyy-MM-dd HH:mm:ss")
.create();
HashMap<String,Object> map = new HashMap<>();
map.put("id",1);
map.put("name","张三");
map.put("date","2021-06-20 11:20:29");
User user = new Gson().fromJson(gson.toJson(map), new TypeToken<User>() {
}.getType());
System.out.println("user:" + user);
}
本篇有不足和可改进的地方大家可以多指点交流,咱们共同进步呀!