对象,list,map与json字符串之间的转换
对象,list,map与json字符串之间的转换
01 引入依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.61</version>
</dependency>
官方源码地址
: https://gitee.com/wenshao/fastjson?_from=gitee_search
02 测试代码
package com.saiyou.test;
import com.alibaba.fastjson.JSON;
import com.saiyou.entity.dto.UserDto;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @author : lyn
* 技术点 :
* @description:
* @date : 2022/1/19 23:45
*/
public class JsonTest {
public static void main(String[] args) {
//1 准备测试数据,单个对象,list,map
UserDto one = UserDto.builder().id(12).age(113).name("试试").build();
UserDto two = UserDto.builder().id(13).age(98).name("看看").build();
List<UserDto> list = Arrays.asList(one, two);
Map<Integer, UserDto> idMap = list.stream().collect(Collectors.toMap(UserDto::getId, UserDto -> UserDto));
//2 转json字符串
//2.1 对象转json字符串(单个对象,list,map都可以)
String objJson = JSON.toJSONString(one);
System.out.println(objJson);
//2.2 list转json字符串(单个对象,list,map都可以)
String listJson = JSON.toJSONString(list);
//结果: {"age":113,"id":12,"name":"试试"}
System.out.println(listJson);
//结果: [{"age":113,"id":12,"name":"试试"},{"age":98,"id":13,"name":"看看"}]
//2.3 map转json字符串(单个对象,list,map都可以)
String mapJson = JSON.toJSONString(idMap);
System.out.println(mapJson);
//结果: {12:{"age":113,"id":12,"name":"试试"},13:{"age":98,"id":13,"name":"看看"}}
//3 对应的json字符串转回原有的类型
//3.1 对象类型的json字符串转回原有的类型,第二个参数指定泛型
UserDto userDto = JSON.parseObject(objJson, UserDto.class);
//3.2 list类型的json字符串转回原有的类型
List<UserDto> userDtos = JSON.parseArray(listJson, UserDto.class);
//3.3 map类型的json字符串转回原有的类型(应该有更好的方法,暂时未找到)
Map<Integer, UserDto> map = (Map<Integer, UserDto>) JSON.parseObject(mapJson, Map.class);
//结果: 正常转回
}
}