实体类的json和对象转换工具类

news/2024/11/3 0:05:31/

json_0">实体类的json/对象转换工具类

以下以QuestionVo为例,对其中的tags和judgeConfig字段进行json和对象的转换.

场景:在与前端交互中,tags和judgeConfig需要存储多个数据或字段,所以在QuestionVo中分别为List和JudgeConfig类型。而在数据库的存储中,tags标签有多个数据,为避免库中数据的冗余,先将其转成json字符串在存入数据库;JudgeConfig类中的字段在开发过程中不确定因素较多,为方便对字段进行扩展和修改,将其转成json字符串再存入数据库。

QuestionVo实体类

/*** 题目封装类* @TableName question*/
@Data
public class QuestionVO implements Serializable {private Long id;private String title;private String content;private List<String> tags;private Integer submitNum;private Integer acceptedNum;private JudgeConfig judgeConfig;private Integer thumbNum;private Integer favourNum;private Long userId;private Date createTime;private Date updateTime;private UserVO userVO;/*** 包装类转对象** @param questionVO* @return*/public static Question voToObj(QuestionVO questionVO) {if (questionVO == null) {return null;}Question question = new Question();BeanUtils.copyProperties(questionVO, question);List<String> tagList = questionVO.getTags();if (tagList != null) {question.setTags(JSONUtil.toJsonStr(tagList));}JudgeConfig voJudgeConfig = questionVO.getJudgeConfig();if (voJudgeConfig != null) {question.setJudgeConfig(JSONUtil.toJsonStr(voJudgeConfig));}return question;}/*** 对象转包装类** @param question* @return*/public static QuestionVO objToVo(Question question) {if (question == null) {return null;}QuestionVO questionVO = new QuestionVO();BeanUtils.copyProperties(question, questionVO);List<String> tagList = JSONUtil.toList(question.getTags(), String.class);questionVO.setTags(tagList);String judgeConfigStr = question.getJudgeConfig();questionVO.setJudgeConfig(JSONUtil.toBean(judgeConfigStr, JudgeConfig.class));return questionVO;}private static final long serialVersionUID = 1L;
}

Question实体类

/*** 题目* @TableName question*/
@TableName(value ="question")
@Data
public class Question implements Serializable {@TableId(type = IdType.ASSIGN_ID)private Long id;private String title;private String content;private String tags;private String answer;private Integer submitNum;private Integer acceptedNum;private String judgeCase;private String judgeConfig;private Integer thumbNum;private Integer favourNum;private Long userId;private Date createTime;private Date updateTime;@TableLogicprivate Integer isDelete;@TableField(exist = false)private static final long serialVersionUID = 1L;
}

JudgeConfig实体类

/*** 题目配置*/
@Data
public class JudgeConfig {private Long timeLimit;private Long memoryLimit;private Long stackLimit;
}

http://www.ppmy.cn/news/1544003.html

相关文章

023集——CAD 窗体交互、多段线进行翻转、错误提示(CAD—C#二次开发入门)

效果如下&#xff1a; 窗体模块&#xff1a; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms;…

windows10 安装 达梦数据库DM8

一. 前期工作 下载 https://www.dameng.com/list_103.html 通过百度网盘分享的文件&#xff1a;达梦数据库 链接&#xff1a;https://pan.baidu.com/s/1mJcT3UiwojeWIhXpAwh-RA 提取码&#xff1a;jyzi 点我: 想要 解压 双击iso文件 二. 安装步骤 1 .双击setup.ext安装 …

高压线路覆冰厚度测量,输电线路微波覆冰监测装置守护电网安全

随着北方地区正式步入冬季&#xff0c;气温急剧下降&#xff0c;高压线路覆冰现象日益严重&#xff0c;给电网安全带来了前所未有的挑战。近日&#xff0c;在东北某省&#xff0c;由于连续低温天气&#xff0c;多条高压线路遭受了严重的覆冰侵袭&#xff0c;这不仅极大地加重了…

Jenkins 发布 Java 项目:高效持续集成与部署

在现代软件开发中&#xff0c;持续集成和持续部署&#xff08;CI/CD&#xff09;已经成为了提高开发效率和软件质量的重要手段。Jenkins 作为一款流行的开源自动化服务器&#xff0c;为 Java 项目的发布提供了强大的支持。本文将详细介绍如何使用 Jenkins 发布 Java 项目&#…

git 删除远程不存在本地命令却能看到的分支

要删除远程不存在但本地却能看到的分支&#xff0c;你可以按照以下步骤操作&#xff1a; 删除本地分支&#xff1a; 如果你确定要删除的分支已经没有用处&#xff0c;可以使用以下命令来删除本地分支&#xff1a; git branch -d <branch-name>这里的 <branch-name>…

量子容错计算

基本思想 容错量子计算的基本想法是&#xff0c;在合理编码后的量子态上直接量子计算&#xff0c;以至于不完全需要解码操作。假设有一个简单的量子电路&#xff0c;但不幸的是噪声影响着这个电路的每一个元件&#xff0c;包括量子态的制备、量子逻辑门、对输出的测量&#x…

关于函数指针的一些例子说明

函数指针是什么&#xff1f; 大家都知道&#xff0c;指针的本质&#xff0c;无非就是一个值&#xff0c;用来指向一个内存的地址。 在一个可执行程序中&#xff0c;函数本身也被加载到内存中&#xff0c;并且也有一个具体的地址。 因此&#xff0c;同样可以用指针来指向一个函…

4. 类和对象(下)

1. 初始化列表 • 之前我们实现构造函数时&#xff0c;初始化成员变量主要使⽤函数体内赋值&#xff0c;构造函数初始化还有⼀种⽅ 式&#xff0c;就是初始化列表&#xff0c;初始化列表的使⽤⽅式是以⼀个冒号开始&#xff0c;接着是⼀个以逗号分隔的数据成 员列表&#xff0c…