webservice中应用的一些常用的方法
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; } }
相关推荐
WebService在.NET中的实战应用是开发跨平台、跨语言应用程序的重要技术。它基于开放标准,如SOAP(简单对象访问协议)和WSDL(Web服务描述语言),使得不同系统间的数据交换变得简单而有效。本篇文章将深入探讨.NET...
综上所述,【WebService压缩方法整合】是一个全面的教程或项目,旨在通过实践展示如何有效地在WebService中应用数据压缩技术,提高服务的性能和用户体验。通过学习和实践这个主题,开发者可以掌握优化WebService通信...
在本文中,我们将详细介绍如何使用 C# 语言在 Winform 平台下开发 WebService Soap 应用,以实现列车时刻、手机归属、QQ 在线、航空时刻等查询工具。 WebService Soap 简介 WebService Soap 是一种基于 SOAP 协议...
创建自定义的WebService是Web应用程序开发中的一个重要环节,它允许不同系统间的应用程序通过网络进行通信和数据交换。以下是自定义WebService的基本步骤: 1. **创建项目**: - 首先,你需要在Visual Studio或...
这个“WebService应用实例”将深入探讨WebService的核心概念、工作原理以及如何在实际项目中实现和应用。 1. **WebService核心概念** - **WSDL(Web Services Description Language)**:WebService的接口定义语言...
【标题】:“浪曦][原创]WebService在.NET中的实战应用五” 这篇教程主要探讨的是如何在.NET环境中实际应用WebService技术,以提升编程实践能力。WebService是一种基于互联网的标准,允许不同平台的应用程序之间...
### SAP Webservice 测试方法详解 #### 一、引言 在现代企业信息化管理中,SAP系统作为企业管理软件中的佼佼者,被广泛应用。随着SAP系统的不断升级与扩展,Webservice技术作为一种重要的集成手段,在SAP系统中...
### PB调用WebService方法 #### 一、概述 在现代软件开发中,Web Service作为一种重要的技术手段被广泛应用,它能够实现不同系统之间的交互与集成。本文将详细介绍如何使用PowerBuilder (PB) 调用WebService的方法...
它在分布式开发中扮演了重要的角色,尤其在需要跨平台和网络环境进行数据交换和方法调用的应用场景中,WebService技术展现出了其独特的价值。随着技术的发展和云计算的普及,WebService技术仍然是构建企业级应用和...
在"REST WebService简单应用"这个主题中,可能涉及的知识点包括如何创建一个简单的RESTful服务,使用JAX-RS(Java API for RESTful Web Services)框架,这是一个Java平台上的REST实现。JAX-RS提供了一种声明式的...
WebService方法查看器是一款工具,主要用于帮助开发者方便地查看和理解Web服务中的各种方法。Web服务是一种基于互联网的软件通信协议,允许不同的应用程序之间进行数据交换。在开发和调试Web服务时,这样的工具至关...
**WebService应用案例** WebService是一种基于互联网的、平台无关的、标准化的通信协议,它允许不同系统之间的应用程序通过网络进行交互。这个技术的核心是XML(可扩展标记语言)和SOAP(简单对象访问协议),它们...
文档还展示了使用switch-case结构来实现方法分发的逻辑,这是WebService处理不同请求时常用的技术。通过判断methodName的值来调用对应的操作,例如case"LoadBlog"会执行加载博客文章的操作,而case"DeleteBlog"可能...
描述中提到"C# Webservice程序中配置log4net的应用",意味着我们将深入探讨如何在C#编程环境中,为WebService项目设置并使用Log4net。这通常涉及在项目的配置文件中定义日志级别、输出目的地、布局模式等,以及在...
### vc6.0调用WebService的方法详解 在深入探讨如何使用Visual C++ 6.0(简称VC6.0)来调用WebService之前,我们首先需要了解几个基本概念:SOAP、WebService以及它们与VC6.0的关系。 #### SOAP(Simple Object ...
【WebService应用实例及教程】 WebService是一种基于Web的、开放式、标准化的服务交互模型,它允许不同系统之间通过HTTP协议进行通信,实现数据交换和服务共享。在本文中,我们将深入探讨WebService的核心概念、...
在本教程中,我们了解了WebService模型的三个核心技术标准,掌握了创建和部署WebService服务的方法,以及如何在客户端应用程序中使用这些服务。WebService简化了分布式系统之间的通信,使得不同平台和语言的应用程序...
在本教程中,“五分钟用Flex构建WebService应用”将带你快速掌握如何利用Flex与WebService进行数据交互,这对于开发动态、实时更新的Web应用至关重要。 WebService是一种基于Web的、平台无关的服务,它通过HTTP协议...
在VC++中调用WebService服务是一项常见的任务,尤其在跨平台通信、系统集成或扩展应用程序功能时。WebService是一种基于Web的、松耦合的服务,它使用标准的HTTP协议进行通信,并通过XML(eXtensible Markup Language...