redisTemplate 存储json, 不想有包名,也不想转为字符串
时间: 2023-05-19 18:02:33 浏览: 165
可以使用Jackson库将JSON对象转换为Map对象,然后使用redisTemplate的opsForHash()方法存储Map对象即可。示例代码如下:
```
ObjectMapper mapper = new ObjectMapper();
Map<String, Object> map = mapper.convertValue(jsonObj, Map.class);
redisTemplate.opsForHash().putAll(key, map);
```
其中,jsonObj为要存储的JSON对象,key为存储在Redis中的键名。
相关问题
redisTemplate 存储json数据
可以使用redisTemplate的opsForValue()方法将json数据存储到Redis中,示例代码如下:
```
redisTemplate.opsForValue().set("key", "{\"name\":\"John\", \"age\":30}");
```
其中,"key"为存储的键名,"{\"name\":\"John\", \"age\":30}"为json格式的数据。
注意:在存储json数据时,需要将json数据转换为字符串格式。
redisTemplate 取json数组
### 使用 `redisTemplate` 从 Redis 中获取 JSON 数组
为了实现这一目标,需要先配置好 `RedisTemplate` 并指定其序列化策略以便能够正确处理 JSON 数据。对于存储和读取 JSON 格式的字符串来说,通常会采用自定义的键与值的序列化器来确保数据可以被准确无误地转换成 Java 对象。
当设置好了合适的序列化机制之后,可以通过调用 `opsForValue()` 方法并结合 `.get(key)` 来访问特定 key 下保存的内容。如果之前是以 JSON 字符串的形式存入了一个列表类型的对象,则取出时也应当按照相同的逻辑反序列化回原始的对象结构[^2]。
下面是一个简单的例子展示如何利用 `RedisTemplate` 实现上述功能:
```java
// 假设已经通过某种方式初始化了 redisTemplate,并设置了相应的序列化工厂
@SuppressWarnings("unchecked")
public List<Type> getTypesFromRedis(String key) {
ValueOperations<Object, Object> ops = (ValueOperations<Object, Object>) redisTemplate.opsForValue();
String jsonStr = (String) ops.get(key);
// 将JSON字符串解析为Type类的集合
return JSONUtil.toList(jsonStr, Type.class);
}
```
在这个过程中需要注意的是,由于 `StringRedisTemplate` 和普通的 `RedisTemplate` 在内部使用的默认序列化方案不同,因此它们之间所操作的数据并不互通。所以在选择使用哪一个模板实例的时候要特别小心,以匹配最初用来写入这些数据的方式[^3]。
阅读全文