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();
}
}
相关推荐
BeanUtil属性拷贝工具类
BeanUtil属性拷贝工具类,支持基本的javabean属性拷贝,通过java反射和泛型编程实现了list属性拷贝
BeanUtil 对象转json
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.ObjectOutputS...
六轴机器人正解
采用的是John H.Craig在【机器人学导论】中的改进DH模型 1.六轴坐标系 2.DH参数 i αi−1\alpha_{i-1}αi−1 ai−1a_{i-1}ai−1 did_idi θi\theta_iθi初值 1 0 0 0 0 2 -90 a1a_1a1 0 -90 3 0 a2a_2a2 0 -90 4 -90 a3a_3a3 d4d...
JsonUtil序列化、反序列化封装类
public class JsonUtil { private static ObjectMapper objectMapper = new ObjectMapper(); static { //对象的所有字段全部列入 objectMapper.setSerializationInclusion(Inclusion.ALWAYS); ...
SAP 发货在途库存管理:POD确认差异下的2种后续调整方案对比
本文详细解析了SAP发货在途库存管理中POD确认差异后的财务调整方案,对比了移动类型417和555 T两种处理方式的适用场景及财务影响。通过实际案例说明如何优化POD流程,减少库存差异损失,提升供应链管理效率。特别适合SAP SD模块用户及供应链管理人员参考。
MediaCreationToolW11:Windows11系统升级与修复利器
在日常使用Windows11系统的过程中,我们可能会遇到一些棘手的问题,比如系统更新时出现异常导致无法成功更新,或者系统本身出现异常需要进行无损修复。此外,当我们的电脑尚未升级到Windows11,而我们又希望进行升级时,一款高效且可靠的工具就显得尤为重要。接下来,MediaCreationToolW11将开始下载Windows11的安装文件,并创建Windows11介质。在“选择你要执行的操作”界面中,选择“ISO文件”。此时,你可以使用你的账户登录系统,并开始使用全新的Windows11系统了。
json和Bean对象互转工具类
json和Bean对象互转工具类 package com.common.utils; import com.alibaba.druid.util.StringUtils; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import java.util.HashMap; import java.util.Map; public class JSONUtils { /** * Bean对象转JSON
告别配置噩梦:用Vcpkg三行命令为Easy3D自动安装Boost、CGAL和Qt(VS2022实测)
本文详细介绍了如何使用Vcpkg工具在VS2022环境下为Easy3D项目一键安装Boost、CGAL和Qt等依赖库,解决传统手动配置的复杂性问题。通过三行简单命令即可自动完成下载、编译和路径配置,大幅提升开发效率,特别适合C++开发者快速搭建3D图形开发环境。
JSONObject:将Bean对象转化为JSON数据
导入的包: commons-beanutils-1.8.3.jar commons-collections-3.2.1.jar commons-lang-2.5.jar commons-logging-1.1.1.jar ezmorph-1.0.6.jar json-lib-2.4-jdk15.jar xom-1.1.jar JSONObject.fromO...
【React】1、React入门与概览(JSX语法)
React入门 文章目录React入门一、React全家桶1. React是什么?2. 谁开发的?3. 为什么要学?4. React的特点5. 学习React之前要掌握的JavaScript基础知识二、React 概览组件JSXVirtual DOM关于虚拟DOM:Data Flow三、React基本使用相关js库四、React JSXJSX 语法规则五、模块与组件、模块化与组件化的理解5.1 模块5.2 组件5.4 模块化5.5 组件化 一、React全家桶 React基础 React-Router(R
华为od 面试八股文_测试/测试开发_01_含答案
华为od面试八股文_测试/测试开发_01_含答案
JavaBean和json数据之间的转换(二)含有date类型的JavaBean
1.前言 上次讲了简单的JavaBean和json格式之间的转换,代码很简单,但是实际过程中,往往用到的JavaBean都是比较复杂的,其他的字段还好,如果JavaBean中包含了date类型的字段,就会比较麻烦,今天我们久就来讲一下,date类型的字段该如何操作。 2.含有date类型的JavaBean和json之间的转换 1)首先,我们写一个含有date类型的JavaB...
【问题解决】Python 运行报错 `ModuleNotFoundError` 全网最全解决方案,一文搞定所有导包问题
本文全面解析Python中常见的ModuleNotFoundError和ImportError问题,提供从基础到高级的解决方案。文章首先分析问题原因,包括模块未安装、环境不一致、路径问题等,然后给出7种解决方案:安装缺失模块、检查Python环境、使用虚拟环境、添加搜索路径、相对导入、setup.py安装本地包和使用__init__.py。针对Jupyter Notebook、Docker容器等常见场景提供专门解决方案,并推荐使用requirements.txt、pipenv等预防措施。最后分享调试技巧,帮
对象,map,list,object互转
【代码】对象,map,list,object互转。
Java语音革命:用代码打造永不疲倦的AI客服,让客户支持效率飙升300%!
客户支持领域常面临“薛定谔困境”,即无法预知客户来电的意图是投诉还是表扬。通过Java技术,尤其是语音识别和自然语言处理(NLP),可以有效解决这一问题。文章展示了如何利用Java代码构建“声纹量子引擎”,实现客户支持的自动化。核心技术包括录音与预处理、语音识别和语义理解。通过百度AI API和Stanford NLP,系统能够快速、准确地识别客户语音并理解其意图。数据表明,优化后的AI处理时间从15分钟缩短至18秒,语音识别准确率提升至98.5%,并发处理能力达到单实例1000+请求。这些技术显著提升了客
VB摄像头监控
该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制
黑马点评Redis笔记
黑马点评Redis笔记
jdk-8u144-linux-x64.tar.gz.
该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包
Map-JSON-对象 三者转换
Map转实体类 1,使用BeanUtils工具类 方法 BeanUtils对象 populate(Object bean, Map<String,String[]>properties) 将Map数据封装到指定Javabean中,一般用于将表单的所有数据封装到javabean setProperty(Object obj,String name,Object ...
复分析 阿尔福斯(Ahlfors) 第三版答案 英文
答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案
STM32F407中文手册
STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。
JAVA对象、数组转JSON
1.需要库: commons-beanutils-1.7.0.jar commons-collections-3.1.jar commons-lang-2.1.jar commons-logging-1.1.3.jar ezmorph-1.0.2.jar json-lib-2.4-jdk15.jar 2.转换方法: //对象转json sqlModel model ...
java实体,MAP,json之间的转换
关于Map,实体类,json之间的转换,网上有很多,依赖的工具包也不一样,这里写一下最近遇到的几种转化,利用alibaba--fastjson进行转化(内容有些也是网上搜的,如有侵权,联系删除) 1、---json转Map 依赖alibaba--fastjson JSONObject jso = JSONObject.parseObject(jsonArr.getSt
Java 将对象转为 Map 的几种方法
可以先将对象序列化为 JSON 字符串,然后再将该字符串反序列化为 Map 对象。Guava 不直接支持对象到 Map 的转换,需要手动创建 Map 并填充数据。Hutool 有一个 BeanUtil 类可以直接将对象转换为 Map。在 Java 开发中,有时需要将对象转为 Map,以下是几种方式。二、对象转为 Map 的几种方式。2.1 使用 Jackson。2.4 使用 Hutool。一、Java 对象示例。2.3 使用 Guava。2.2 使用 Gson。
Object 转Map,Map转Object方式总结
商品业务对象定义:Product Product product = new Product(); product.setId(1L); product.setName("爱他美") product.setProductDt("2022-03-16") 第一种:通过Alibaba Fastjson实现: pom.xml 文件依赖 <dependency> <groupId>com.alibaba</groupId> <artifactId
Maven项目中使用JSON时相关的依赖包
今天下午在Maven项目中使用JSON的时候遇到了很多问题, 比如输出对象时输出的是地址: getBooksById>>{indi.marcus.demo.model.Book@28b0599} 通过JSONObject.fromObject(book)转成JSON字符串如下: getBookById>>{“author”:“罗贯中”,“name”:“三国演义”,“id”:...
json常用操作
java拷贝对象: BeanUtils.copyProperties(obj2,obj1);//后复前 Java对Json字符串解析: str=StringEscapeUtils.unescapeHtml4(""); JSONArray list=(JSONArray) JSONObject.parseArray(str);//json字符串转数组Record record=JSONO...
使用json-lib
下载 到http://json-lib.sourceforge.net下载json-lib-1.1-jdk15.jar,运行json还需要的包有:commons-lang.jar、commons-logging.jar,commons-beanutils.jar、xom-1.0-2005-01-05.jar、ezmorph-1.0.1.jar,可在http://www.docjar.co...
java常用的json,jsonarray,map转对象
开发过程中常见的几种转换场景,设计json,jsonarray,map等
174



被折叠的 条评论
为什么被折叠?



