redisTemplate.opsForHash().values(RedisKeyUtils.ORG_UNIT_MAP_KEY)返回json字符串的list, redis中存储的类型为{"lastUpdateCode":"AUTO","parentUnitCode":10000002,"unitCode":10000501,"unitName":"集团总部测试组织(CH)","unitScope":"1","zbu":"10000002"}. 使用fastjson将json字符串转换为对象,得到List<OrgUnitCache> list
时间: 2023-07-09 13:54:17 浏览: 167
你可以使用以下代码将JSON字符串转换为List<OrgUnitCache>:
```
List<OrgUnitCache> list = new ArrayList<>();
String jsonStr = null;
List<Object> values = redisTemplate.opsForHash().values(RedisKeyUtils.ORG_UNIT_MAP_KEY);
for (Object value : values) {
jsonStr = JSON.toJSONString(value);
OrgUnitCache orgUnitCache = JSON.parseObject(jsonStr, OrgUnitCache.class);
list.add(orgUnitCache);
}
```
首先,通过redisTemplate的opsForHash()方法获取指定key的所有values。这些values都是JSON字符串类型的,需要将它们转换为Java对象类型。使用for循环遍历所有的values,将每个值先转换为JSON字符串类型,然后使用JSON.parseObject()方法将其转换为OrgUnitCache对象类型,并添加到List中。最后返回List<OrgUnitCache>对象即可。
相关问题
redisTemplate.opsForHash().values(RedisKeyUtils.ORG_UNIT_MAP_KEY) 转 List<OrgUnitCache> List
可以使用 Java 8 的 Stream API 将 Redis 中的 Hash 通过 values() 方法取出所有的值,再通过 map() 方法将值转换为 OrgUnitCache 类型,最后通过 collect() 方法将所有的值收集到一个 List 中,代码如下:
```java
List<OrgUnitCache> orgUnitCacheList = redisTemplate.opsForHash()
.values(RedisKeyUtils.ORG_UNIT_MAP_KEY)
.stream()
.map(obj -> (OrgUnitCache) obj)
.collect(Collectors.toList());
```
其中,`obj -> (OrgUnitCache) obj` 表示将 Object 类型的 obj 强制转换为 OrgUnitCache 类型,需要注意的是,如果 Redis 中存储的值类型与 OrgUnitCache 不一致,可能会出现 ClassCastException 异常。
List<OrgUnitCache> list = redisTemplate.opsForHash().values(RedisKeyUtils.ORG_UNIT_MAP_KEY)
这段代码的作用是从 Redis 中获取 key 为 `RedisKeyUtils.ORG_UNIT_MAP_KEY` 的 Hash 中的所有值,并将这些值转换成 OrgUnitCache 类型的 List。具体实现方式是通过 RedisTemplate 的 `opsForHash().values()` 方法获取到 Redis 中的所有值,然后将这些值强制转换成 OrgUnitCache 类型,并将它们收集到一个 List 中。
需要注意的是,如果 Redis 中存储的值类型与 OrgUnitCache 不一致,可能会出现 ClassCastException 异常。
阅读全文