zoukankan      html  css  js  c++  java
  • 将bean转换成键值列表

    日常开发中在进行接口对接的数据传输时,有一种场景是将bean转成jsonString,这里可以将bean转换成Map再转成jsonString。

    工具类如下:

    public static String toJSONString(Object obj) {
            JSONObject json = new JSONObject();
            try {
                Map<String, String> map = beanToMap(obj);
                for (Map.Entry<String, String> entry : map.entrySet()) {
                    json.put(entry.getKey(), entry.getValue());
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }
            return json.toString();
        }
    
        /**
         * 将bean转换成Map
         * 
         * @param bean
         * @return
         */
        public static Map<String, String> beanToMap(Object bean) {
            if (bean == null) {
                return null;
            }
    
            Map<String, String> parameters = new HashMap<String, String>();
    
            if (null != parameters) {
                // 取得bean所有public 方法
                Method[] Methods = bean.getClass().getMethods();
                for (Method method : Methods) {
                    if (method != null && method.getName().startsWith("get")
                            && !method.getName().startsWith("getClass")) {
                        // 得到属性的类名
                        String value = "";
                        // 得到属性值
                        try {
                            String className = method.getReturnType()
                                    .getSimpleName();
                            if (className.equalsIgnoreCase("int")) {
                                int val = 0;
                                try {
                                    val = (Integer) method.invoke(bean);
                                } catch (InvocationTargetException e) {
                                    e.printStackTrace();
                                }
                                value = String.valueOf(val);
                            } else if (className.equalsIgnoreCase("String")) {
                                try {
                                    value = (String) method.invoke(bean);
                                } catch (InvocationTargetException e) {
                                    e.printStackTrace();
                                }
                            }
                            if (value != null && value != "") {
                                // 添加参数
                                // 将方法名称转化为id,去除get,将方法首字母改为小写
                                String param = method.getName().replaceFirst("get",
                                        "");
                                if (param.length() > 0) {
                                    String first = String.valueOf(param.charAt(0))
                                            .toLowerCase();
                                    param = first + param.substring(1);
                                }
                                parameters.put(param, value);
                            }
                        } catch (IllegalArgumentException e) {
                            e.printStackTrace();
                        } catch (IllegalAccessException e) {
                            e.printStackTrace();
                        }
                    }
                }
            }
    
            return parameters;
        }
  • 相关阅读:
    22.抽象类
    21.多态
    20.修饰符
    19.继承
    day46---MySQL数据库进阶(一)
    day45---mysql数据库基本操作初阶(二)
    day45---计算机安全项目(癞蛤蟆)
    day44---数据库初阶(一)
    day44---windows下安装MySQL-5.6.37
    day42---几种network IO模型
  • 原文地址:https://www.cnblogs.com/mark8080/p/6247351.html
Copyright © 2011-2022 走看看