⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jsonconvertutil.java

📁 EasyJWeb是基于java技术
💻 JAVA
字号:
package com.easyjf.web.ajax;

import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.Date;
import java.util.StringTokenizer;

import com.easyjf.util.ClassUtils;
import com.easyjf.web.exception.FrameworkException;
/**
 * JSon与PO对象互相转换实用工具
 * @author 大峡
 *
 */
public class JSonConvertUtil {
	public final static String NULL_STRING = "null";

	public static boolean isSimpleType(Class cls) {
		return ClassUtils.isPrimitiveOrWrapper(cls) ||  String.class.isAssignableFrom(cls)
				|| Number.class.isAssignableFrom(cls)
				|| Date.class.isAssignableFrom(cls);
	}
	
	public static Object simpleConvert(String value, Class paramType) {
		if (paramType == String.class) {
			return value;
		}

		if (paramType == Character.class || paramType == Character.TYPE) {
			if (value.length() == 1) {
				return new Character(value.charAt(0));
			} else {
				throw new IllegalArgumentException(
						"Can't more than one character in string - can't convert to char: '" + value + "'"); //$NON-NLS-1$ //$NON-NLS-2$
			}
		}

		String trimValue = value.trim();

		if (paramType == Boolean.class || paramType == Boolean.TYPE) {
			return Boolean.valueOf(trimValue);
		}

		if (paramType == Integer.class || paramType == Integer.TYPE) {
			if (trimValue.length() == 0) {
				return new Integer(0);
			}
			return Integer.valueOf(trimValue);
		}

		if (paramType == Short.class || paramType == Short.TYPE) {
			if (trimValue.length() == 0) {
				return new Short((short) 0);
			}
			return Short.valueOf(trimValue);
		}

		if (paramType == Byte.class || paramType == Byte.TYPE) {
			if (trimValue.length() == 0) {
				return new Byte((byte) 0);
			}
			return Byte.valueOf(trimValue);
		}

		if (paramType == Long.class || paramType == Long.TYPE) {
			if (trimValue.length() == 0) {
				return new Long(0);
			}
			return Long.valueOf(trimValue);
		}

		if (paramType == Float.class || paramType == Float.TYPE) {
			if (trimValue.length() == 0) {
				return new Float(0);
			}
			return Float.valueOf(trimValue);
		}

		if (paramType == Double.class || paramType == Double.TYPE) {
			if (trimValue.length() == 0) {
				return new Double(0);
			}
			return Double.valueOf(trimValue);
		}

		throw new IllegalArgumentException(
				"Unsupported conversion type: " + paramType.getName()); //$NON-NLS-1$
	}

	public static Object collectionConvert(String value, Class paramType) {
		if (NULL_STRING.equals(value))
			return null;
		Object ret=null;
		if(java.util.Set.class.isAssignableFrom(paramType))
		{
			ret=new java.util.HashSet();
		}
		else if(java.util.List.class.isAssignableFrom(paramType))
		{
			ret=new java.util.ArrayList();
		}
		else if(java.util.Map.class.isAssignableFrom(paramType))
		{
			ret=new java.util.HashMap();
		}
		else//默认情况下使用ArrayList进行
		{
			//ret=new java.util.ArrayList();
			ret=Arrays.asList((Object[])arrayConvert(value,String[].class));
		}
		return ret;
	}

	public static Object arrayConvert(String value, Class paramType) {
		if (NULL_STRING.equals(value))
			return null;
		if (!paramType.isArray()) {
			throw new FrameworkException("ArrayConverter.ClassIsNotAnArray:"+paramType.getName()); //$NON-NLS-1$
		}
		if (value.startsWith("[")) {
			value = value.substring(1);
		}
		if (value.endsWith("]")) {
			value = value.substring(0, value.length() - 1);
		}
		try {
			StringTokenizer st = new StringTokenizer(value,",");
			int size = st.countTokens();
			Class componentType = paramType.getComponentType();
			Object array = Array.newInstance(componentType, size);
			for (int i = 0; i < size; i++) {
				String token = st.nextToken();
				Object output = simpleConvert(token, componentType);			
				Array.set(array, i, output);
			}
			return array;
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -