JAVA利用反射映射JSON对象为JavaBean
关于将JSONObject转换为JavaBean,其实在JSONObject中有对于的toBean()方法来处理,还可以根据给定的JsonConfig来处理一些相应的要求,比如过滤指定的属性
- //返回true表示过滤掉该属性
- jsonConfig.setJsonPropertyFilter(new PropertyFilter() {
- @Override
- public boolean apply(Object o, String n, Object v) {
- return false;
- }
- });
//返回true表示过滤掉该属性
jsonConfig.setJsonPropertyFilter(new PropertyFilter() {
@Override
public boolean apply(Object o, String n, Object v) {
return false;
}
});
- //在序列化为json时,将Integer对象设为null
- jsonConfig.registerDefaultValueProcessor(Integer.class,
- new DefaultValueProcessor() {
- @SuppressWarnings("unchecked")
- @Override
- public Object getDefaultValue(Class type) {
- return "";
- }
- });
//在序列化为json时,将Integer对象设为null
jsonConfig.registerDefaultValueProcessor(Integer.class,
new DefaultValueProcessor() {
@SuppressWarnings("unchecked")
@Override
public Object getDefaultValue(Class type) {
return "";
}
});
- 当JSONObject遇到Json串是null的时候,会返回JSONNUll
当JSONObject遇到Json串是null的时候,会返回JSONNUll
- public static ExamBLOBs parseJsonToExam(JSONObject obj) {
- ExamBLOBs exam = new ExamBLOBs ();
- try {
- List<Field> fieldList = new ArrayList<Field>();
- fieldList
- .addAll(Arrays.asList(exam.getClass().getDeclaredFields()));
- for (Field field : fieldList) {
- String name = field.getName();
- Object value = obj.get(name);
- if (value != null && !(value instanceof JSONNull)) {
- //使其可以对私有属性复制
- field.setAccessible(true);
- if (name.equalsIgnoreCase("Option")) {
- JSONArray jArr = (JSONArray) value;
- field.set(exam, jArr.toString());
- } else {
- String type = field.getType().toString();
- if (type.indexOf("Integer") >= 0) {
- field.set(exam, (Integer) value);
- } else if (type.indexOf("String") >= 0) {
- field.set(exam, (String) value);
- } else if (type.indexOf("Date") >= 0) {
- JSONObject dataObj = (JSONObject) value;
- field.set(exam,
- JSONObject.toBean(dataObj, Date.class));
- }
- }
- }
- }
- } catch (SecurityException e) {
- e.printStackTrace();
- } catch (IllegalArgumentException e) {
- e.printStackTrace();
- } catch (IllegalAccessException e) {
- e.printStackTrace();
- }
- return exam;
- }
public static ExamBLOBs parseJsonToExam(JSONObject obj) {
ExamBLOBs exam = new ExamBLOBs ();
try {
List<Field> fieldList = new ArrayList<Field>();
fieldList
.addAll(Arrays.asList(exam.getClass().getDeclaredFields()));
for (Field field : fieldList) {
String name = field.getName();
Object value = obj.get(name);
if (value != null && !(value instanceof JSONNull)) {
//使其可以对私有属性复制
field.setAccessible(true);
if (name.equalsIgnoreCase("Option")) {
JSONArray jArr = (JSONArray) value;
field.set(exam, jArr.toString());
} else {
String type = field.getType().toString();
if (type.indexOf("Integer") >= 0) {
field.set(exam, (Integer) value);
} else if (type.indexOf("String") >= 0) {
field.set(exam, (String) value);
} else if (type.indexOf("Date") >= 0) {
JSONObject dataObj = (JSONObject) value;
field.set(exam,
JSONObject.toBean(dataObj, Date.class));
}
}
}
}
} catch (SecurityException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
return exam;
}
JAVA利用反射映射JSON对象为JavaBean的更多相关文章
- java利用反射机制判断对象的属性是否为空以及获取和设置该属性的值
1.java利用反射机制判断对象的属性是否为空: Map<String,String> validateMap = new LinkedHashMap<String, String& ...
- 【转】Java利用反射机制访问私有化构造器
Java利用反射机制访问私有化构造器 博客分类: java 我们都知道,当一个类的构造方法被设为私有的时候(private),在其他类中是无法用new来实例化一个对象的. 但是有一种方法可以把带有 ...
- java根据url获取json对象
package test; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; ...
- java利用反射调用类的某个方法
java利用反射机制 可以动态调用某个类的某个方法,在 扩展系统功能或提供对外接口时经常用的到. 代码如下: 打印类Print.java package com.test.reflct; /** * ...
- java利用反射获取类的属性及类型
java利用反射获取类的属性及类型. import java.lang.reflect.Field; import java.math.BigDecimal; import java.util.Map ...
- FastJson对于JSON格式字符串、JSON对象及JavaBean之间的相互转换
fastJson对于json格式字符串的解析主要用到了一下三个类: JSON:fastJson的解析器,用于JSON格式字符串与JSON对象及javaBean之间的转换. JSONObject:fas ...
- java 如何对由json对象构成的数组形式的字符串进行遍历?
1.情景展示 现在已知字符串为: [{"name":"微微笑","img":"http://zos.alipayobjects ...
- FastJson学习:JSON格式字符串、JSON对象及JavaBean之间的相互转换
当前台需要传送一系列相似数据到后端时,可以考虑将其组装成json数组对象,然后转化为json形式的字符串传输到后台 例如: nodes = $('#PmPbsSelect_tree').tree('g ...
- java利用反射将pojo转为json对象
最近做以太坊钱包项目需要与前台进行json交互,写一个工具类,经普通javaBean转为json对象 package util; import java.lang.reflect.Field; imp ...
随机推荐
- ARM的六大类指令集---LDR、LDRB、LDRH、LDM、STR、STRB、STRH、STM
http://blog.csdn.net/u013477200/article/details/50723555
- js产生随机数的几个方法
1.Math.random(); 结果为0-1间的一个随机数(包括0,不包括1) 2.Math.floor(num); 参数num为一个数值,函数结果为num的整数部分. 3.Math.round(n ...
- SpringCloud学习笔记(14)----Spring Cloud Netflix之Hystrix对Feign的支持
1. Hystrix对Feign的支持 添加Feign中IUserBiz的实现类HystrixFallBack: package com.wangx.cloud.springcloud02consum ...
- 系统出现0x0000006B蓝屏修复,系统文件损坏 bootcat.cache、driver.stl
系统蓝屏,无论如何都不能进入系统,所以你需要一个U盘启动器,就是能绕过电脑的系统进入电脑,可以用U盘做一个U盘启动器,或者其他方法均可以,只要能进入到你的电脑访问C盘即可 2 下载链接内的文件解压后放 ...
- iOS面试总结(待完善)
闲的没事总结一下面试资料,先列个大纲,然后慢慢填充,一步步完善,反正也不急. 1.基本属性 2.KVC与KVO 3.代理与block 4.多线程:NSThread,GCD,NSOperation 5. ...
- Centos7 安装 opencv
Centos7 安装 opencv CentOS Linux release 7.2.1511 (Core) 1.安装依赖 yum install https://dl.fedorap ...
- 从fork面试题開始的思考
一.文章来由 还是按照惯例来说一下文章为什么来的.晚上好基友在网上刷面试题,看到一个有趣的题目,于是開始了研究,就有了这篇文章. 二.进入正题 题目例如以下: #include <stdio.h ...
- 足球大数据:致足球怀疑论者-The Counter(s)-Reformation反教条改革
足球大数据:致足球怀疑论者-The Counter(s)-Reformation反教条改革 注:本序列文章都是本人对<The Numbers Game>书(豆瓣链接http://book. ...
- Node.js 博客实例(十)pv统计和留言统计
原教程 https://github.com/nswbmw/N-blog/wiki/_pages的第十章,因为版本号等的原因,在原教程基础上稍加修改就可以实现. post.js中将var post={ ...
- Zepto源代码分析之二~三个API
因为时间关系:本次仅仅对这三个API($.camelCase.$.contains.$.each)方法进行分析 第一个方法变量转驼峰:$.camelCase('hello-world-welcome' ...