博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BeanUtil 对象转json
阅读量:5216 次
发布时间:2019-06-14

本文共 3576 字,大约阅读时间需要 11 分钟。

package cn.com.softmap.cache.util; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.lang.reflect.Field; import java.lang.reflect.Modifier; import java.util.Arrays; import java.util.Collection; import java.util.Date; import java.util.Iterator; import java.util.List; /**  */ public class BeanUtil {
private static final List
LEAVES = Arrays.asList(Boolean.class, Character.class, Byte.class, Short.class, Integer.class, Long.class, Float.class, Double.class, Void.class, String.class, Date.class); /** * 把Bean转换为字符串. * * @param obj * @return String */ public static String toString(Object obj) {
if (obj == null) return "null"; if (LEAVES.contains(obj.getClass())) {
return obj.toString(); } if (obj instanceof Enum) {
return ((Enum
) obj).name(); } if (obj.getClass().isArray()) {
Object[] oa = (Object[]) obj; StringBuffer sb = new StringBuffer(); sb.append("["); for (int i = 0; i < oa.length; i++) sb.append(toString(oa[i])); sb.append("]"); return sb.toString(); } if (obj instanceof Collection) {
Collection
tempCol = (Collection
) obj; Iterator
it = tempCol.iterator(); StringBuffer sb = new StringBuffer(); sb.append("["); for (int i = 0; it.hasNext(); i++) {
if (i > 0) {
sb.append(","); } Object val = it.next(); sb.append(toString(val)); } sb.append("]"); return sb.toString(); } if (obj instanceof Class) {
return obj.getClass().getName(); } StringBuilder sb = new StringBuilder(); sb.append(obj.getClass().getSimpleName()).append(":["); for (Field f : obj.getClass().getDeclaredFields()) {
if (Modifier.isStatic(f.getModifiers())) continue; f.setAccessible(true); sb.append(f.getName()).append(":"); try {
sb.append(toString(f.get(obj))).append(","); } catch (IllegalArgumentException e) {
e.printStackTrace(); } catch (IllegalAccessException e) {
e.printStackTrace(); } } sb.append("]"); return sb.toString(); } /** * 通过序列化进行深度复制 * * @param obj * @return Object * @throws Exception */ public static Object deepClone(Object obj) throws Exception {
return deserialize(serialize(obj)); } /** * @param obj * @return byte[] * @throws IOException */ public static byte[] serialize(Object obj) throws IOException {
if (null == obj) {
return null; } // 将对象写到流里 ByteArrayOutputStream bo = new ByteArrayOutputStream(); ObjectOutputStream oo = new ObjectOutputStream(bo); oo.writeObject(obj); oo.flush(); return bo.toByteArray(); } /** * @param bytes * @return Object * @throws Exception */ public static Object deserialize(byte[] bytes) throws Exception {
if (null == bytes || bytes.length == 0) {
return null; } ByteArrayInputStream bi = new ByteArrayInputStream(bytes); ObjectInputStream oi = new ObjectInputStream(bi); return oi.readObject(); } }

转载于:https://www.cnblogs.com/duyinqiang/p/5692526.html

你可能感兴趣的文章
22.引用指针
查看>>
【 js 基础 】【读书笔记】Javascript “继承”
查看>>
五.Hystrix请求缓存(request cache)
查看>>
Python+OpenCV图像处理之图像金字塔
查看>>
你的日志组件记录够清晰嘛?--自己开发日志组件 Logger
查看>>
简版的文件传输
查看>>
input(Text)控件作为填空输入,但运行后,有曾经输入的记录显示,用autocomplete="off"解决...
查看>>
Java多线程
查看>>
长春理工大学第十四届程序设计竞赛(重现赛)J
查看>>
统计一篇英文文章内每个单词出现频率,并返回出现频率最高的前10个单词及其出现次数...
查看>>
leetcode36 有效数独
查看>>
jQuery选择器和遍历的总结
查看>>
ThreadPerMessagePattern——关于匿名内部类
查看>>
osg 3ds模型加载与操作
查看>>
[转帖]IBM收购红帽价格是多少?是否会形成垄断企业?会存在什么不安因素?...
查看>>
[转]Whirlwind Tour of ARM Assembly
查看>>
python socket.error: [Errno 10054] 解决方法
查看>>
JavaScript 高级篇之函数 (五)
查看>>
本周个人总结
查看>>
C# 中在Form控件创建以外的线程操作控件问题
查看>>