KSOAP的soapObject转换成pojo的工具种

KSOAP的soapObject转换成pojo的工具类

最近在android上使用KSOAP,于是写了这个工具类。

比较简单,利用反射将属性注入到pojo里面去。

 

使用方法:

User u = SoapObjectUtil.soapToPojo(User.class,soapObject);
 

 

代码:

 

/**
 * soapObject->javaBean转化工具
 * @author zjf
 *
 */
public class SoapObjectUtil {
	/**
	 * soap转化为javabean
	 * @param <T>
	 * @param clazz
	 * @param soapObject
	 * @return
	 * @throws IllegalArgumentException
	 * @throws SecurityException
	 * @throws IllegalAccessException
	 * @throws InvocationTargetException
	 * @throws NoSuchMethodException
	 * @throws InstantiationException
	 */
	public static <T> T soapToPojo(Class<T> clazz, SoapObject soapObject)
			throws IllegalArgumentException, SecurityException,
			IllegalAccessException, InvocationTargetException,
			NoSuchMethodException, InstantiationException {
		
		Field[] fields = clazz.getDeclaredFields();
		Object obj = clazz.newInstance();
		for (Field f : fields) {
			String method = "set" + f.getName().substring(0, 1).toUpperCase()
					+ f.getName().substring(1);
			if (hasMethod(method, clazz.getMethods())) {
				clazz.getMethod(method, new Class[] { f.getType() }).invoke(
						obj,
						new Object[] { soapObject.getProperty(f.getName()) });
			}
		}
		return (T) obj;
	}

	private static boolean hasMethod(String methodName, Method[] method) {
		for (Method m : method) {
			if (methodName.equals(m.getName())) {
				return true;
			}
		}
		return false;
	}
}