java:利用fastjson判断一个类型(java.lang.reflect.Type)是否是一个javabean
来源:互联网 发布:linux开机自启动命令 编辑:程序博客网 时间:2024/04/29 15:09
fastjson中JSON.toJSON(Object javaObject)
方法将一个java对象被序列化成json对象时,返回的对象类型有三种可能:JSONObject,JSONArray,原始类型(简单类型)。
最近在使用fastjson进行对java对象序列化和反序列化时,遇到一个问题:
需要判断一个类型(java.lang.reflect.Type
)是否为一个java bean(这里所说的java bean并非完全符合JavaBean规范的类型,只要不是简单类型、Map、Collection、Array,能被fastjson序列化为JSONObject对象而不是JSONArray或简单类型就算),如果要自己实现这个代码还是挺复杂的,需要一大堆的类型判断。
研究了fastjson的代码之后,发现它也有这个判断需求(实现代码近200行,好复杂)。在fastjson的基础上实现这个判断就很方便了。
原理很简单 ,com.alibaba.fastjson.parser.ParserConfig
类中有一个getDeserializer(Type)方法用于根据Type返回相应的反序列化器(Deserializer),如果返回的对象类型是JavaBeanDeserializer,这个Type肯定是个java bean对象。
如下代码:
import java.lang.reflect.Type;import com.alibaba.fastjson.TypeReference;import com.alibaba.fastjson.parser.ParserConfig;import com.alibaba.fastjson.parser.deserializer.JavaBeanDeserializer;public class TypeUtils{ public static final boolean isJavaBean(Type type){ if(null == type ) throw new NullPointerException(); // 根据 getDeserializer 返回值类型判断是否为 java bean 类型 return ParserConfig.global.getDeserializer(type) instanceof JavaBeanDeserializer; }}
阅读全文
0 0
- java:利用fastjson判断一个类型(java.lang.reflect.Type)是否是一个javabean
- java.lang.reflect.Type
- 利用Java判断一个数是否是素数的算法
- Java判断一个数是否是质数
- Java判断一个字符串是否是数字
- java判断一个数是否是素数
- java判断一个字符串是否是回文
- java不使用强制类型转换判断实数是否恰好是一个整数
- 判断一个类是JAVA类型还是用户定义类型
- 判断一个类是JAVA类型还是用户定义类型
- SSH整合时报的一个异常:java.lang.reflect.InvocationTargetException
- 自己写一个java.lang.reflect.Proxy代理的实现
- 自己写一个java.lang.reflect.Proxy代理的实现
- JAVA判断一个Object对象是否为Array类型
- Java中怎样判断一个字符串是否是数字???
- Java中怎样判断一个字符串是否是数字
- java判断输入的字符串是否是一个IP
- Java中怎样判断一个字符串是否是数字
- PHP isset()与empty()的使用区别详解
- sourceInsight4 破解笔记(完美破解)
- POJ 1006 Biorhythms 中国剩余定理
- 血管的三维重建
- 使用Gogs配置Git服务器(非源码)
- java:利用fastjson判断一个类型(java.lang.reflect.Type)是否是一个javabean
- 模板类 栈
- JS总结——数据类型
- asp.net查询数据显示等待中提示效果
- Linux 常用命令使用英文全称
- opensuse42.2vim安装YouCompleteMe
- GNS3环境qemu虚拟机linux通过cloud节点loopback桥接上网
- POJ 1222 EXTENDED LIGHTS OUT 二进制高斯消元 (开关翻转问题)
- Android消息机制—— Handler实现原理深度解析