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;
        }
  • 相关阅读:
    eclipse maven 插件 安装 和 配置
    Windows下 maven3.0.4的安装步骤+maven配置本地仓库
    js中转换Date日期格式
    Java 集合类详解
    java的反射机制
    Java 单例模式详解
    Http协议与TCP协议简单理解
    初识JavaScript,Ajax,jQuery,并比较三者关系
    MyBatis
    MyEclipse、Eclipse优化设置
  • 原文地址:https://www.cnblogs.com/mark8080/p/6247351.html
Copyright © 2011-2022 走看看