将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;
    }

 

posted @ 2017-01-04 09:23  美材帮  阅读(463)  评论(0编辑  收藏  举报