日常开发中在进行接口对接的数据传输时,有一种场景是将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; }
原文:http://www.cnblogs.com/mark8080/p/6247351.html