1.将xml转换成map:
public static Map parseXmlToMap(Document documnet) { Map map = new HashMap(); Element rootElt = documnet.getRootElement(); //获取根节点 List nodes = rootElt.elements(); //获取根节点下的所有子节点 for (Iterator it = nodes.iterator(); it.hasNext();) { Element elm = (Element) it.next(); //获取子节点对象 map.put(elm.getName(), elm.getStringValue()); //将子节点放于map中 } return map; }
?2.将map转换成xml:
public static Document parseMapToXml(Map map) { Document document = DocumentHelper.createDocument(); Element nodeElement = document.addElement("res"); for (Object obj : map.keySet()) { Element keyElement = nodeElement.addElement(String.valueOf(obj)); keyElement.setText(String.valueOf(map.get(obj))); } return document; }
?
3将map转成实体bean:
public static <T> T createBean(Map map, Class<T> cls) { JSONObject json = JSONObject.fromObject(map); return BeanUtil.createBean(json.toString(), cls); }
?
4.将bean转换成map形式:
public static Document beanToXml(Object obj) { try { Map hashMap = new HashMap(); hashMap = BeanUtils.describe(obj); hashMap.remove("class"); return parseMapToXml(hashMap); } catch (Exception e) { return null; } }
?5.BeanUtil类:
public class BeanUtil { private static final Log logger = LogFactory.getLog(BeanUtil.class); static { DateConverter dc = new DateConverter(); String[] datePattern = {"yyyy-MM-dd", "yyyy-MM-dd HH:mm", "yyyy-MM-dd HH:mm:ss"}; dc.setPatterns(datePattern); ConvertUtils.register(dc, Date.class); } public static Map toMap(Object bean) { return bean != null ? new BeanMap(bean) : null; } /** * 属性值去空处理 * * @param map * @return */ public static Map trimMap(Map map) { for (Object o : map.entrySet()) { Map.Entry me = (Map.Entry) o; map.put(me.getKey(), me.getValue().toString().trim()); } return map; } /** * 将请求参数封装成Bean对象 * * @param request 请求 * @param cls 类class * @return Object */ public static <T> T createBean(HttpServletRequest request, Class<T> cls) { try { T obj = cls.newInstance(); Map map = request.getParameterMap(); BeanUtils.populate(obj, map); return obj; } catch (Exception e) { logger.error(e.getMessage()); return null; } } /** * 将以json方式提交的字符串封装成Bean对象 * * @param json json对象 * @param cls bean的class * @return Object */ public static <T> T createBean(String json, Class<T> cls) { if (json == null) return null; ObjectMapper mapper = new ObjectMapper(); mapper.getDeserializationConfig().disable(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES); mapper.getDeserializationConfig().setDateFormat(new DateFormat()); try { return mapper.readValue(json, cls); } catch (IOException e) { logger.error(e.getMessage()); return null; } } /** * 将以json方式提交的字符串封装成Bean对象 * * @param json json对象 * @param javaType bean的class * @return Object */ @SuppressWarnings({"unchecked"}) public static <T> T createBean(String json, JavaType javaType) { if (json == null) return null; ObjectMapper mapper = new ObjectMapper(); mapper.getDeserializationConfig().disable(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES); mapper.getDeserializationConfig().setDateFormat(new DateFormat()); try { return (T) mapper.readValue(json, javaType); } catch (IOException e) { logger.error(e.getMessage()); return null; } } /** * 将json 数组封装成 arrays * * @param json json数组 * @param cls 类名 * @return T[] */ @SuppressWarnings({"unchecked"}) public static <T> T createArray(String json, Class cls) { if (json == null) return null; return (T) createBean(json, TypeFactory.arrayType(cls)); } /** * 将以json方式提交的字符串封装成Bean集合 * * @param jsonArray json数组 * @param cls bean的class * @return List */ public static <T> List<T> createBeanList(String jsonArray, Class<T> cls) { if (jsonArray == null) return null; ObjectMapper mapper = new ObjectMapper(); mapper.getDeserializationConfig().disable(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES); mapper.getDeserializationConfig().setDateFormat(new DateFormat()); try { return mapper.readValue(jsonArray, TypeFactory.collectionType(List.class, cls)); } catch (IOException e) { logger.error(e.getMessage()); return null; } } /** * 对象转换json字符串 * * @param obj 对象 * @return String */ public static String toJsonString(Object obj) { if (obj == null) return null; ObjectMapper mapper = new ObjectMapper(); // can reuse, share globally mapper.getSerializationConfig().setSerializationInclusion(JsonSerialize.Inclusion.NON_NULL); mapper.configure(SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS, false); mapper.getSerializationConfig().setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")); try { StringWriter sb = new StringWriter(); mapper.writeValue(sb, obj); return sb.toString(); } catch (IOException e) { logger.error(e.getMessage()); return null; } } public static String listToJsonString(List list) { StringBuffer buf = new StringBuffer("["); if (list != null) { String flag = ""; for (Object obj : list) { if (!(obj instanceof Map)) break; Map map = (Map) obj; Iterator it = map.entrySet().iterator(); String mFlag = ""; buf.append(flag).append("{"); while (it.hasNext()) { Map.Entry m = (Map.Entry) it.next(); buf.append(mFlag).append(m.getKey().toString()).append(":"); if (m.getValue() == null) { buf.append("''"); } else if (m.getValue() instanceof Date) { /* SimpleDateFormat simple = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss"); buf.append("new Date('").append(simple.format((Date)m.getValue())).append("')");*/ buf.append("'").append(DateUtil.timeToStr((Date) m.getValue())).append("'"); } else { buf.append("'").append(m.getValue().toString()).append("'"); } mFlag = ","; } buf.append("}"); flag = ","; } } buf.append("]"); return buf.toString(); } /** * 将Map封装成json序列对象 * * @param mapping 映射对象 * @return JSONObject */ public static JSONObject createJSONObject(Map mapping) { if (mapping == null) return null; JSONObject jsonObject = new JSONObject(); for (Object key : mapping.keySet()) { Object value = mapping.get(key); if (value == null) { jsonObject.put((String) key, ""); } if (value instanceof Object[]) { Object[] obj = (Object[]) mapping.get((String) key); String[] array_value = (String[]) convertArray(obj, String.class); jsonObject.put((String) key, array_value == null ? "" : array_value); } else { String string_value = mapping.get((String) key).toString(); jsonObject.put((String) key, string_value == null ? "" : string_value); } } return jsonObject; } /** * 将list<BasicMapping>集合对象封装成json序列对象数组 * * @param list 映射对象集合 * @return JSONArray */ public static JSONArray createJSONArray(List<Map> list) { JSONArray jsonArray = null; JSONObject jsonObject; if (list != null) { jsonArray = new JSONArray(); for (Map mapping : list) { jsonObject = createJSONObject(mapping); jsonArray.add(jsonObject); } } return jsonArray; } public static Object[] convertArray(Object[] objects, Class returnClass) { if (objects == null) return null; Object[] returnArray = null; if (returnClass.isAssignableFrom(String.class)) returnArray = new String[objects.length]; if (returnClass.isAssignableFrom(Boolean.class)) returnArray = new Boolean[objects.length]; if (returnClass.isAssignableFrom(Date.class)) returnArray = new Date[objects.length]; if (returnClass.isAssignableFrom(BigDecimal.class)) returnArray = new BigDecimal[objects.length]; if (returnClass.isAssignableFrom(Double.class)) returnArray = new Double[objects.length]; if (returnClass.isAssignableFrom(Float.class)) returnArray = new Float[objects.length]; if (returnClass.isAssignableFrom(Long.class)) returnArray = new Long[objects.length]; if (returnClass.isAssignableFrom(Integer.class)) returnArray = new Integer[objects.length]; if (returnClass.isAssignableFrom(Short.class)) returnArray = new Short[objects.length]; if (returnArray != null) { for (int i = 0; i < objects.length; i++) { returnArray[i] = convertObject(objects[i], returnClass); } return returnArray; } else { return null; } } /** * 将值按照指定的类型转型 * * @param value 值 * @param returnClass 返回的class类型 * @return 返回实例 */ protected static Object convertObject(Object value, Class returnClass) { if (value == null) return null; try { if (returnClass.isAssignableFrom(String.class)) { if (value instanceof String) return value; if (value instanceof Boolean) return value.toString(); if (value instanceof Date) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); sdf.setLenient(false); return sdf.format(value); } if (value instanceof BigDecimal) return ((BigDecimal) value).toPlainString(); if (value instanceof Double) return (new BigDecimal((Double) value)).toPlainString(); if (value instanceof Float) return (new BigDecimal((Float) value)).toPlainString(); if (value instanceof Long) return value.toString(); if (value instanceof Integer) return value.toString(); if (value instanceof Short) return value.toString(); } else if (returnClass.isAssignableFrom(Boolean.class)) { if (value instanceof Boolean) return value; if (value instanceof String) { return value.equals("true"); } } else if (returnClass.isAssignableFrom(Date.class)) { if (value instanceof Date) return value; if (value instanceof String) { SimpleDateFormat formatter; String stringValue = (String) value; if (stringValue.length() == 10) formatter = new SimpleDateFormat("yyyy-MM-dd"); else if (stringValue.length() == 16) formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm"); else if (stringValue.length() == 19) formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); else return null; formatter.setLenient(false); return formatter.parse(stringValue); } } else if (returnClass.isAssignableFrom(BigDecimal.class)) { if (value instanceof BigDecimal) return value; if (value instanceof Double) return new BigDecimal((Double) value); if (value instanceof Float) return new BigDecimal((Float) value); if (value instanceof Long) return new BigDecimal((Long) value); if (value instanceof Integer) return new BigDecimal((Integer) value); if (value instanceof Short) return new BigDecimal((Short) value); if (value instanceof String) return new BigDecimal((String) value); } else if (returnClass.isAssignableFrom(Double.class)) { if (value instanceof Number) return ((Number) value).doubleValue(); if (value instanceof String) return (new BigDecimal((String) value)).doubleValue(); } else if (returnClass.isAssignableFrom(Float.class)) { if (value instanceof Number) return ((Number) value).floatValue(); if (value instanceof String) return (new BigDecimal((String) value)).floatValue(); } else if (returnClass.isAssignableFrom(Long.class)) { if (value instanceof Number) return ((Number) value).longValue(); if (value instanceof String) return (new BigDecimal((String) value)).longValue(); } else if (returnClass.isAssignableFrom(Integer.class)) { if (value instanceof Number) return ((Number) value).intValue(); if (value instanceof String) return (new BigDecimal((String) value)).intValue(); } else if (returnClass.isAssignableFrom(Short.class)) { if (value instanceof Number) return ((Number) value).shortValue(); if (value instanceof String) return (new BigDecimal((String) value)).shortValue(); } else { return null; } } catch (Exception e) { logger.error(e.getMessage()); // return null; } return null; } public static void main(String[] args) throws IllegalAccessException, InvocationTargetException, IOException { //Class cls = LinkedHashMap.class; Map map = new HashMap(); map.put("a", " 1 "); map.put("b", " 2 "); map.put("c", " 3 "); // JSONObject jsonObject = BeanUtil.createJSONObject(map); // System.out.println(jsonObject.toString()); // // List list = new ArrayList(); // list.add(map); // JSONArray jsonArray = BeanUtil.createJSONArray(list); // System.out.println(jsonArray.toString()); //BeanUtil.trimMap(map); } } class DateConverter extends DateTimeConverter { DateConverter() { } DateConverter(Object o) { super(o); } @Override protected Object convertToType(Class aClass, Object o) { try { return super.convertToType(aClass, o); } catch (Exception e) { return null; } } protected Class getDefaultType() { return Date.class; } }
?
?