`
panmingzhi0815
  • 浏览: 12775 次
  • 性别: Icon_minigender_2
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

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

 

 

分享到:
评论

相关推荐

    在Lotus Domino 中应用webservice

    在Domino中使用在webservice和其他异构系统做交互,详细方法与代码实现

    WebService应用案例

    WebService的相关使用方法,通过网络获得支持搜索天气的地区等信息,并在应用中显示,同时介绍了ksoap的使用

    2、webservice--常用注解1

    WebService 是一种基于 XML 的远程procedure调用(RPC)机制,它允许不同的应用程序之间进行交互和数据交换。在 Java 中,WebService 通常使用 JAX-WS(Java API for XML-Based Web Services)实现。今天,我们将...

    基于WebService的分布式多层应用范例

    DBAccess日志记录每个WebService方法被调用所执行的SQL;业务日志记录每个对业务数据的修改操作,包括操作人、时间、操作是否成功、业务数据的类型和Id 此template使用Sql Server数据库,启动后会自动创建表 数据库...

    用WebService进行异步通信

    最容易被想到的方法当然是建立一个新的线程来执行WebService的请求并获得结果,这样就可以不影响程序的主线程的工作,并且也非常容易实现,但是在一个复杂的应用程序中,用户也许会同时请求多个webservice,这时候就...

    采用客户端函数方法调用WebService的程序例子

    对于DotNet环境,提供了集成简单又方便的客户端InVoking WebService的方法,该例子完美展示该例子,供大家开发客户端WebService调用的应用例子。

    WebService大讲堂之Axis2系列教程

    例如,可以使用WebService来发布服务端 Java类的方法,以便使用不同的客户端进行调用。这样可以有效地集成多种不同的技术来完成应用系统。WebService还经常被使用在SOA中,用于 SOA各个部分交换数据。本课程重点讲解...

    建立Webservice实例

    它描述了webservice中一些方法访问的契约(规范),谁都遵守该规范,即它描述了web service中能被访问方法的名,参数,参数的类型和返回值等等规定,其它平台上的程序必须按照wsdl中的规范来访问

    webservice教程

    WebService是一种跨编程语言和跨操作系统...除了WebService外,常见的远程调用技术还有RMI(Remote method invoke)和CORBA,由于WebService的跨平台和跨编程语言特点,因此比其他两种技术应用更为广泛,但性能略低。

    Asp.Net的webService简单示例

    C#的webservice简单示例及jquery调用方式,包括如何定义方法及返回自定义json数据,不使用aspnet提供的{d:content}形式

    Webservice之Axis高级编程

    例如,可以使用WebService来发布服务端 Java类的方法,以便使用不同的客户端进行调用。这样可以有效地集成多种不同的技术来完成应用系统。WebService还经常被使用在SOA中,用于 SOA各个部分交换数据。本课程重点讲解...

    WebService之Axis2教程

    例如,可以使用WebService来发布服务端 Java类的方法,以便使用不同的客户端进行调用。这样可以有效地集成多种不同的技术来完成应用系统。WebService还经常被使用在SOA中,用于 SOA各个部分交换数据。本课程重点讲解...

    webservice远程调用,返回数据生成xml文件,并通过SAX解析出来

    这是webservice应用的一个简单的例子。根据该例子的思想,可以实现很多功能了。例如把client工程的sayHello方法改为查询数据库的数据,在返回给webservice工程。(在该例子中工程名命名有点不规范,不好意思)。在...

    C#Post带参数请求+WebService接口.zip

    1.(WebService带参数Post请求 )方法实现和方法调用。 2.(WebService接口)WebService应用程序的创建不在介绍,百度介绍更详细。

    Delphi编写WebService 中文WORD版.doc

    通过学习本文档,读者可以掌握Delphi编写WebService的方法和技巧,提升在Web开发领域的能力,实现构建功能强大的Web应用程序的目标。 其他说明:本文档旨在帮助读者深入了解Delphi编写WebService的过程,为他们提供...

    Axis2(WebService)经典教程.doc

    例如,可以使用WebService来发布服务端 Java类的方法,以便使用不同的客户端进行调用。这样可以有效地集成多种不同的技术来完成应用系统。WebService还经常被使用在SOA中,用于 SOA各个部分交换数据。本课程重点讲解...

    ASP.NET调用WebService服务的方法详解

    本文实例讲述了ASP.NET调用WebService服务的方法。分享给大家供大家参考,具体如下: 一、WebService:WebService是以独立于平台的方式,通过标准的Web协议,可以由程序访问的应用程序逻辑单元。 (1)应用程序逻辑...

    Axis2(WebService)经典教程

    例如,可以使用WebService来发布服务端 Java类的方法,以便使用不同的客户端进行调用。这样可以有效地集成多种不同的技术来完成应用系统。WebService还经常被使用在SOA中,用于 SOA各个部分交换数据。本课程重点讲解...

    WebService介绍(一):创建WebService

    创建WebService

    java和.net调用webservice的各种方法总结.docx

    webservice的应用,java和.net

Global site tag (gtag.js) - Google Analytics