实体类与String相互转换实现方式
使用Jackson工具类,通过JsonUtils的bean2Json方法将实体类转为JSON字符串存入数据库,再通过json2Bean方法从字符串还原实体类,实现实体类与String互转,适用于促销规则等动态配置场景,提升配置灵活性与可维护性。
实体类与String相互转换
工作里头偶然碰上了需要把实体类和字符串互相倒腾一下的需求,顺手把这过程记下来,没准儿后来人能少走两步弯路。

先看看需要转换的对象长什么样
假设有一个满减类型的配置实体,里面定义了“满几件”和“打几折”这两个关键字段。这类实体在业务里挺常见,比如促销活动规则、商品属性配置等等。
@ApiModel(description = "满减类型配置")
@Data
public class DiscountTypeConfig {
/**
* 满几件
*/
@ApiModelProperty(name = "full_goods_num", value = "满几件", required = true)
@NotNull(message = "满几件不能为空")
@Range(min = 1, message = "满几件必须大于0")
private Integer fullGoodsNum;
/**
* 打几折(百分比)
*/
@ApiModelProperty(name = "percentage_discount", value = "打几折(百分比)", required = true)
@NotNull(message = "打几折(百分比)不能为空")
@Range(min = 1, max = 99, message = "打几折(百分比)必须大于0小于100")
private Integer percentageDiscount;
接下来是工具类,这块是关键
要完成互转,得借助JSON这把瑞士军刀。我们用Jackson来干这个活,代码不复杂,但功能齐全:支持对象转字符串、字符串转对象、字符串转List、字符串转Map——基本覆盖了日常开发中的常见姿势。
package com.kaying.star.system.common.util.json;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.Ja vaType;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import ja va.util.List;
import ja va.util.Map;
/**
* json工具类
*
*/
@Component
public class JsonUtils {
@Autowired
private ObjectMapper objectMapper;
public String bean2Json(Object data) {
try {
String result = objectMapper.writeValueAsString(data);
return result;
} catch (JsonProcessingException e) {
e.printStackTrace();
}
return null;
}
public T json2Bean(String jsonData, Class beanType) {
try {
T result = objectMapper.readValue(jsonData, beanType);
return result;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public List json2List(String jsonData, Class beanType) {
Ja vaType ja vaType = objectMapper.getTypeFactory().constructParametricType(List.class, beanType);
try {
List resultList = objectMapper.readValue(jsonData, ja vaType);
return resultList;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public Map json2Map(String jsonData, Class keyType, Class valueType) {
Ja vaType ja vaType = objectMapper.getTypeFactory().constructMapType(Map.class, keyType, valueType);
try {
Map resultMap = objectMapper.readValue(jsonData, ja vaType);
return resultMap;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
转成字符串之后,直接塞进数据库就完了
调用工具类一行搞定:
String disConfig = jsonUtils.bean2Json(discountTypeConfig)
从数据库捞出来字符串,再变回实体类
反过来也是同样的套路:
//通过实体类转成的string String disConfig = jsonUtils.bean2Json(discountTypeConfig) //通过工具类将string转换成实体类 DiscountTypeConfig discountTypeConfig = jsonUtils.json2Bean(disConfig , DiscountTypeConfig.class)
这种做法特别适合各种动态配置场景——比如活动规则、用户个性化设置、产品参数模板等等。一句话总结:实体类转成字符串,存进数据库;从库中取出字符串,再还原成实体类,完美闭环。
总结
这其实不算什么高深技术,但胜在实用。希望这段经验能帮到正在纠结这类问题的朋友,省去自己造轮子的时间。
Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。
Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。
Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。
Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。















