将一个对象转化为类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;
}
}
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;
}
}
相关文章推荐
- 将一个对象转化为类json风格字符串的工具类
- 将一个对象转化为类json风格字符串的工具类
- 一个json对象相互转化工具类
- 前端js如何生成一个对象,并转化为json字符串
- 前端js如何生成一个json对象,并转化为json字符串
- cocos2d JS 在 JavaScript 中,怎样把一个对象转化成 JSON 字符串?
- 后台将对象转换为json格式,前台js解析json数据,将字符串转化为数组
- js中字符串转化成json对象
- 一个关于Json数据List和对象嵌套反序列化的工具类,java(20151130)
- JS中JSON对象和JSON字符串的相互转化
- Json对象与Json字符串的转化、JSON字符串与Java对象的转换
- Java中关于Json对象类型和字符串类型之间互相转化的问题
- Gson 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库。可以将一个 JSON 字符串转成一个 Java 对象,或者反过来。
- 将一个字符串对象数组转化为List<对象>
- JSON对象转化为字符串详解
- js中的json对象和字符串之间的转化
- 字符串和JSON对象的互相转化
- 写一个将一个String类型的json经过base64加密后解密转化成javaBean的工具类
- 自己编写的一个Json工具类,实现了反射将整个Object转换为Json对象的功能,支持Hibernate的延迟加载对象
- 【common】JavaScript ----- 对象转化为json字符串