当前位置: 代码网 > it编程>编程语言>Java > redis中存储list<map>,list<entity>的处理

redis中存储list<map>,list<entity>的处理

2024年07月03日 Java 我要评论
用到的工具类1、序列化操作string multimapstr = json.tojsonstring(multimaplist); // list转换为json字符串object o = json.

用到的工具类

1、序列化操作

string multimapstr = json.tojsonstring(multimaplist); // list转换为json字符串
object o = json.parse(userlist); // list转换为object
list<map<string, string>> maps = castbeanutil.castlistmap(json.parse(userlist), string.class, string.class);// object转换list
list tzareas = json.parsearray(res, tzarea.class); // 反序列化,json字符串转换为list

2、object转换为指定类型的map或者其他类型

使用如下工具类,可以将object转换为list《map》

package com.geekmice.springbootselfexercise.utils;

import java.util.arraylist;
import java.util.hashmap;
import java.util.list;
import java.util.map;

/**
 * @belongsproject: spring-boot-self-exercise
 * @belongspackage: com.geekmice.springbootselfexercise.utils
 * @author: pingmingbo
 * @createtime: 2023-12-09  15:34
 * @description: 缓存工具类
 * @version: 1.0
 */
public class castbeanutil {

    private castbeanutil() {
    }

    /**
     * json.parsearray返回object需要转换,该方法可以转换为字符串类型或者其他引用类型
     * 问题:双层for循环
     * @param obj 源数据
     * @param kcalzz key对应class类型
     * @param vcalzz value对应class类型
     * @param <k>key类型
     * @param <v>value类型
     * @return list<map>
     */
    public static <k, v> list<map<k, v>> castlistmap(object obj, class<k> kcalzz, class<v> vcalzz) {
        list<map<k, v>> result = new arraylist<>();
        if (obj instanceof list<?>) {
            for (object mapobj : (list<?>) obj) {
                if (mapobj instanceof map<?, ?>) {
                    map<k, v> map = new hashmap<>(16);
                    for (map.entry<?, ?> entry : ((map<?, ?>) mapobj).entryset()) {
                        map.put(kcalzz.cast(entry.getkey()), vcalzz.cast(entry.getvalue()));
                    }
                    result.add(map);
                }
            }
            return result;
        }
        return null;
    }

}

通过字符串类型处理

list《map》形式
key:字符串
val:序列化过的字符串

list<map<string, string>> multimaplist = lists.newarraylist();
for (int i = 0; i < 5; i++) {
     linkedhashmap<string, string> itemmap = maps.newlinkedhashmap();
     itemmap.put("name", "jack" + i);
     if (i % 2 == 0) {
         itemmap.put("age", string.valueof(10 + i));
         itemmap.put("sex", "男");
     } else {
         itemmap.put("age", string.valueof(11 + i));
         itemmap.put("sex", "女");
     }
     multimaplist.add(itemmap);
 }
string multimapstr = json.tojsonstring(multimaplist);
client.opsforvalue().set("str:multiusers", multimapstr, dateconstant.time_of_day, timeunit.seconds);
string userlist = client.opsforvalue().get("str:multiusers");
list<map<string, string>> maps = castbeanutil.castlistmap(json.parse(userlist), string.class, string.class);
log.info("maps : [{}]", maps);

list《entity》结构数据

list<tzarea> arealist = lists.newarraylist();
 for (int i = 0; i < 10; i++) {
     tzarea item = new tzarea();
     item.setareaid((long) i);
     item.setareaname("江苏省");
     item.setlevel(1);
     item.setparentid(1l);
     arealist.add(item);
 }

 client.opsforvalue().set("str:multiareas", json.tojsonstring(arealist), dateconstant.time_of_day, timeunit.seconds);
 string res = client.opsforvalue().get("str:multiareas");
 list<tzarea> tzareas = json.parsearray(res, tzarea.class);
 log.info("tzareas : [{}]", json.tojsonstring(tzareas));

到此这篇关于redis中存储list<map>,list<entity>的处理的文章就介绍到这了,更多相关redis list<map> list<entity>内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网! 

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com