将Map对象存入mysql和redis,并将其进行json解析和对象转化

[JAVA] json 转Map,Map转实体对象,在mysql和redis的不同存储和解析方式
涉及3中类型:
Json字符串
Map<k,v>
实体对象
1、mysql
①将实体对象封装为Map类型,Map再转为Json,此方法较多,Gson和JSON都可以,不详解
②将字符串直接转化为Map,且Map的value值为实体对象:切忌强转,而应该使用new TypeReference()构造方法,这样便可通过Map的key值来获取对应的value值

     Map<String,SplitMoneyRelust> breakMap = JSON.parseObject(order.getCorsUserBreak(), new TypeReference<HashMap<String,SplitMoneyRelust>>(){});

将Json转化为Map,再转化为实体对象(+++++++推荐++++++++)
必须经过两次JSON.parseObject()解析:
第一次只能将其转化为Map,且不能直接转为Map<k,v>
第二次将转化的Map再进行转为实体对象

Map map = JSON.parseObject(roomOrder.getCorsUserDinner(), Map.class);
SplitMoneyRelust split = JSON.parseObject(JSON.toJSONString(map), SplitMoneyRelust.class);

2、redis
①将定义好的Map对象存入redis中,推荐使用原生的redisTemplate,这样存入的数据前面会有一个@class标识,来指明是个Map类型

Map<String, FinanceRoomDateResult> dateMapping = new HashMap<>();
redisTemplate.opsForValue().set(BaseCommon.ROOM_DATE + year + "_" + room.getId(), dateMapping);

在这里插入图片描述
②将redis中的Map<k,v>对象取出,这里就可以直接使用强转了,因为存在redis中的@Class已经作为了标识;

Map<String, FinanceRoomDateResult> map = (Map<String, FinanceRoomDateResult>) redisTemplate.opsForValue().get(BaseCommon.ROOM_DATE + param.getYear() + "_" + room.getId());
  • 7
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将对象存入Redis,需要进行对象的序列化和反序列化。RedisTemplate类提供了一些方法来实现这一目的。 首先,确保RedisTemplate的序列化器已经配置。默认情况下,RedisTemplate使用JdkSerializationRedisSerializer作为默认的序列化器,但你也可以使用其他的序列化器,如JacksonJsonRedisSerializer或GenericJackson2JsonRedisSerializer。 接下来,使用opsForValue()方法获取值操作类,然后使用set(key, value)方法将对象存储到Redis中。这里的key是要存储的对象的键,而value是要存储的对象本身。 以下是一个例子: ```java // 假设你有一个名为User的对象类 User user = new User("John", 25); // 创建一个User对象 // 将User对象存入Redis redisTemplate.opsForValue().set("user:1", user); ``` 在这个例子中,我们将一个名为"user:1"的User对象存储在Redis中。 值得注意的是,存储在Redis中的对象需要是可序列化的。因此,你需要确保User类实现了Serializable接口或使用适当的序列化器来序列化和反序列化对象。 当你需要从Redis中获取对象时,可以使用opsForValue()方法的get(key)方法来检索对象。然后,你可以将返回的值转换回你所需的对象类型。 ```java // 从Redis中获取User对象 User retrievedUser = (User) redisTemplate.opsForValue().get("user:1"); ``` 这样,你就可以将对象存入Redis并从中检索出来了。记得在使用RedisTemplate时,根据需要选择合适的方法和序列化器,以满足你的业务需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值