ObjectMapper小用处

    在上一篇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);
    }

 如果您有什么好的转换方式,可以在下方分享一下哈!!!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值