您的位置:首页 > Web前端 > JavaScript

将一个对象转化为类json风格字符串的工具类

2010-07-08 09:06 477 查看
import java.lang.reflect.Field;

import java.lang.reflect.InvocationTargetException;

import java.lang.reflect.Method;

import java.util.Collection;

import java.util.Map;

import java.util.Set;

/**

* 将对象转化为字符串的工具类,适用于对象,简单类型,Collection,Map

* 注意:对象的属性必须有相应的get方法

* @author plucury

*

* @version $Id: Obj2StringUtil.java,v 0.1 2009-9-17 下午08:45:31 Exp $

*/

public class Obj2StringUtil {

/**

* 将传入对象转化为String

* @param object

* @return

*/

@SuppressWarnings( { "unchecked" })

public static String toObjString(Object obj) {

boolean startFlag = true;

StringBuilder sb = new StringBuilder();

sb.append("{");

Class clz = obj.getClass();

Field[] fields = clz.getDeclaredFields();

for (Field field : fields) {

if (!startFlag) {

sb.append(",");

}

startFlag = false;

Class[] types = new Class[] {};

try {

Method m = clz.getMethod(toGetterString(field.getName()), types);

Object value = m.invoke(obj);

sb.append(field.getName());

sb.append(":");

sb.append(Obj2StringUtil.toDistributeString(value));

} catch (IllegalAccessException e) {

System.out.println("调用的方法无法访问:" + toGetterString(field.getName()));

} catch (IllegalArgumentException e) {

System.out.println("使用了非法的参数:" + toGetterString(field.getName()));

} catch (InvocationTargetException e) {

System.out.println("方法异常:" + toGetterString(field.getName()));

} catch (NullPointerException e) {

System.out.println(e.getStackTrace());

} catch (ExceptionInInitializerError e) {

System.out.println("方法初始化异常:" + toGetterString(field.getName()));

} catch (NoSuchMethodException e) {

System.out.println("调用的方法不存在:" + toGetterString(field.getName()));

}

}

sb.append("}");

return sb.toString();

}

/**

* 将传入的Collection转化为String

* @param collection

* @return

*/

@SuppressWarnings( { "unchecked" })

public static String toCollectionString(Collection collection) {

boolean startFlag = true;

StringBuilder sb = new StringBuilder();

sb.append("[");

for (Object obj : collection) {

if (!startFlag) {

sb.append(",");

}

startFlag = false;

sb.append(Obj2StringUtil.toDistributeString(obj));

}

sb.append("]");

return sb.toString();

}

/**

* 将传入的Map转化为String

* @param map

* @return

*/

@SuppressWarnings( { "unchecked" })

public static String toMapString(Map map) {

boolean startFlag = true;

StringBuilder sb = new StringBuilder();

sb.append("[");

Set keySet = map.keySet();

for (Object obj : keySet) {

if (!startFlag) {

sb.append(",");

}

startFlag = false;

sb.append(Obj2StringUtil.toDistributeString(obj));

sb.append(":");

sb.append(Obj2StringUtil.toDistributeString(map.get(obj)));

}

sb.append("]");

return sb.toString();

}

@SuppressWarnings( { "unchecked" })

private static String toDistributeString(Object obj) {

if (obj == null) {

return "null";

} else if (Obj2StringUtil.isBasicObj(obj)) {

return obj.toString();

} else if (obj instanceof Collection) {

return Obj2StringUtil.toCollectionString((Collection) obj);

} else if (obj instanceof Map) {

return Obj2StringUtil.toMapString((Map) obj);

} else {

return Obj2StringUtil.toObjString(obj);

}

}

private static String toGetterString(String feildName) {

String head = feildName.substring(0, 1);

String tail = feildName.substring(1);

head = head.toUpperCase();

return "get" + head + tail;

}

private static boolean isBasicObj(Object obj) {

if (obj instanceof Integer) {

return true;

}

if (obj instanceof Long) {

return true;

}

if (obj instanceof Short) {

return true;

}

if (obj instanceof Boolean) {

return true;

}

if (obj instanceof Float) {

return true;

}

if (obj instanceof Double) {

return true;

}

if (obj instanceof String) {

return true;

}

return false;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: