基本信息
源码名称:ognl工具类
源码大小:1.22KB
文件格式:.zip
开发语言:Java
更新时间:2022-01-04
   友情提示:(无需注册或充值,赞助后即可获取资源下载链接)

     嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300

本次赞助数额为: 2 元 
   源码介绍
ognl工具类


* pom文件
* OgnlUtil工具类
* OgnlUtil工具类使用

pom文件<!--map  value值提取-->
<dependency>
    <groupId>ognl</groupId>
    <artifactId>ognl</artifactId>
    <!--不要使用最新版本3.2.x的ognl,会出现MemberAccess异常-->
    <version>3.1.2</version>
</dependency>

OgnlUtil工具类public class OgnlUtil {
        public static String getString(String ognl, Map root) {
                try {
                        Object value = Ognl.getValue(ognl, root);
                        if (null == value) {
                                return "";
                        }

                        return value.toString();
                } catch (OgnlException e) {
                        throw new RuntimeException(e);
                }
        }

        //Number是所有数字的父类
        public static Number getNumber(String ognl, Map root) {
                Number result = null;
                try {
                        Object val = Ognl.getValue(ognl, root);
                        if (val != null) {
                                if (val instanceof Number) {
                                        result = (Number) val;
                                } else if (val instanceof String) {
                                        result = new BigDecimal((String) val);
                                }
                        }

                } catch (OgnlException e) {
                        throw new RuntimeException(e);
                }
                return result;
        }

        //获取Boolean类型
        public static Boolean getBoolean(String ognl, Map root) {
                Boolean result = null;
                try {
                        Object val = Ognl.getValue(ognl, root);
                        if (val != null) {
                                if (val instanceof Boolean) {
                                        result = (Boolean) val;
                                } else if (val instanceof String) {
                                        result = ((String) val).equalsIgnoreCase("true") ? true : false;
                                } else if (val instanceof Number) {
                                        if (((Number) val).intValue() == 1) {
                                                result = true;
                                        } else {
                                                result = false;
                                        }
                                }
                        }
                } catch (OgnlException e) {
                        throw new RuntimeException(e);
                }
                return result;
        }

        /**
         * 获取List集合,里面每一个元素都是Map
         *
         * @param ognl
         * @param root
         * @return
         */
        public static List<Map<String, Object>> getListMap(String ognl, Map root) {
                List<Map<String, Object>> list = null;
                try {
                        list = (List) Ognl.getValue(ognl, root);
                        if (list == null) {
                                list = new ArrayList();
                        }

                } catch (OgnlException e) {
                        throw new RuntimeException(e);
                }
                return list;
        }

        /**
         * 获取list集合,里面每一个元素都是String
         *
         * @param ognl
         * @param root
         * @return
         */
        public static List<String> getListString(String ognl, Map root) {
                List<String> list = null;
                try {
                        list = (List) Ognl.getValue(ognl, root);
                        if (list == null) {
                                list = new ArrayList();
                        }
                } catch (OgnlException e) {
                        throw new RuntimeException(e);
                }
                return list;
        }

        public static Map<String, Object> getMap(String ognl, Map root) {
                Map<String, Object> map;
                try {
                        Object object = Ognl.getValue(ognl, root);
                        if (null == object) {
                                return new HashMap<>(0);
                        }

                        return (Map) object;
                } catch (OgnlException e) {
                        throw new RuntimeException(e);
                }
        }

}

OgnlUtil工具类使用public static void main(String[] args) {
                Map<String,Object> map = new HashMap<>();
                map.put("name","guohao");
                map.put("user",new User("guohao"));

                String name = getString("name", map);
                // name:guohao
                System.out.println("name:" name);
        
    
                String userName = getString("user.userName", map);
                // user#UserName: guohao
                System.out.println("user#UserName: " userName);
        }

         static class User {
                private String userName;

                 public User(String userName) {
                         this.userName = userName;
                 }

                 public String getUserName() {
                         return userName;
                 }

                 public void setUserName(String userName) {
                         this.userName = userName;
                 }
         }