对象,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);
        //结果: 正常转回

    }
}
posted @ 2022-01-19 23:58  进击的小蔡鸟  阅读(655)  评论(0编辑  收藏  举报