对象,list,map与json字符串之间的转换


对象,list,map与json字符串之间的转换

01 引入依赖

<dependency>
   <groupId>com.alibabagroupId>
   <artifactId>fastjsonartifactId>
   <version>1.2.61version>
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);
       //结果: 正常转回
?
  }
}
?