字符串转为对应的java类

发布时间 2023-03-22 21:16:50作者: 庞某人

业务描述:

某个设备的配置信息使用字符串保存

{
    "isOpen": true,
    "startTime": "21:00:00",
    "endTime": "07:00:00",
    "seconds": 360,
    "exhalationOrSaver": 1,
    "screensaverPicture": "/resource/img/20230311/751805b66a3b4f8ab876365087c52038.jpg"
}

 

定义好的java类

package com.****;

import lombok.Data;


/**
 * @Author: 
 * @Date: 2023/3/22 9:38
 * @Description: 智慧看板终端具体配置项
 */

@Data
public class WnNurseTvConfigDto {
    /**
     * 设备id
     */
    private String deviceId;

    /**
     * 是否开启定时屏保
     */
    private Boolean isOpen;
    /**
     * 开始时间
     */
    private String startTime;
    /**
     * 结束时间
     */
    private String endTime;

    /**
     * 点亮屏幕X秒后息屏
     */
    private int seconds;
    /**
     * 息屏or屏保
     * 0: 息屏
     * 1: 屏保
     */
    private int exhalationOrSaver;

    /**
     * 屏保图片
     */
    private String screensaverPicture;

}

获取到配置数据后,转为对应的类

// 其中nurseTvDeviceDtoList.get(i).getConfig() = 字符串 {"isOpen":true,"startTime":"21:00:00","endTime":"07:00:00","seconds":360,"exhalationOrSaver":1,"screensaverPicture":"/resource/img/20230311/751805b66a3b4f8ab876365087c52038.jpg"}


WnNurseTvConfigDto configDto = JSON.parseObject(nurseTvDeviceDtoList.get(i).getConfig(), new TypeReference<WnNurseTvConfigDto>() {});

//赋值
 nurseTvDeviceDtoList.get(i).setWnNurseTvConfigDto(configDto);

//或者第二种实现方式
WnNurseTvConfigDto configDto1 = JSON.parseObject(nurseTvDeviceDtoList.get(i).getConfig(),WnNurseTvConfigDto.class);
nurseTvDeviceDtoList.get(i).setWnNurseTvConfigDto(configDto1);

 集合修改:

//集合
//返回的是指定map对象
JSON.parseObject("{key:value,key1:value2......}", new TypeReference<Map<k, v>>(){});

//例如:
hashMap<String,Object> map=JSON.parseObject("{key:value,key1:value2......}", new TypeReference<Map<String,Object>>(){});