在上一篇ElasticSearch的Java High Level REST Client 简单案例中用到过这样一个类 ObjectMapper,现在处处都是json串,用这个类转换json串和java对象还是挺不错的,这里再结合redis,简单分享一个小demo.
1.以string类型存入redis中;
@RunWith(SpringRunner.class)
@SpringBootTest
public class ObjectMapperTest {
@Autowired
private RedisTemplate<String,String> redisTemplate;
private ObjectMapper objectMapper = new ObjectMapper();
@Test
public void insert() throws JsonProcessingException {
List<User> userList = new ArrayList<User>();
userList.add(new User("xiaochen","333"));
userList.add(new User("xiaoli","444"));
ValueOperations<String, String> value = redisTemplate.opsForValue();
value.set("users",objectMapper.writeValueAsString(userList));
}
}
查看库中数据
2.读取数据
方式1:
@Test
public void getData() throws JsonProcessingException {
ValueOperations<String, String> value = redisTemplate.opsForValue();
String users = value.get("users");
JSONArray objects = JSON.parseArray(users);
List<User> userList = objects.toJavaList(User.class);
for (int i = 0; i < userList.size(); i++) {
System.out.println(userList.get(i));
}
}
方式2:
@Test
public void getData2() throws JsonProcessingException {
ValueOperations<String, String> value = redisTemplate.opsForValue();
String users = value.get("users");
List list = objectMapper.readValue(users, List.class);
System.out.println(list);
for (int i = 0; i < list.size(); i++) {
String str = list.get(i) + "";
str = str.replace("{", "{\"");
str = str.replace("}", "\"}");
str = str.replaceAll("=", "\": \"");
str = str.replaceAll(", ", "\",\"");
User user = JSON.parseObject(str, User.class);
System.out.println(user);
}
}
当然读取的方式还有很多,这里就简单列举到这里。
再就是玩好 Stream API ,也能少写好多代码,
@Test
public void test2(){
List<User> userList = new ArrayList<User>();
userList.add(new User("xiaochen","333"));
userList.add(new User("xiaoli","444"));
Map<String, String> map = userList.stream().collect(Collectors.toMap(User:: getName, user->user.getAge()));
redisTemplate.opsForHash().putAll("all",map);
}
如果您有什么好的转换方式,可以在下方分享一下哈!!!