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 ...
随机推荐
- 关于Spring的69个面试问答——终极列表 (转)
这篇文章总结了一些关于Spring框架的重要问题,这些问题都是你在面试或笔试过程中可能会被问到的.下次你再也不用担心你的面试了,Java Code Geeks这就帮你解答. 大多数你可能被问到的问题都 ...
- 74HC164应用
管脚定义与内部逻辑图 注:管脚一般A.B连在一起作为一个输入:CLR硬件接VDD. 原理如下:每8个CLK上升沿,bit分别从QA移至QH,所以给定一个字节,左移后送入至A/B,这样Bit7经过8个上 ...
- C语言-实现字符串倒序输出
方法1: Action(){//倒序输出 char *src="abcdefgh123"; char *desc; desc=(char *)malloc(100*sizeof(c ...
- swift语言点评十九-类型转化与检查
1.oc比较: -(BOOL) isKindOfClass: classObj判断是否是这个类或者这个类的子类的实例 -(BOOL) isMemberOfClass: classObj 判断是否是这个 ...
- jQuery基本操作以及与js的一些比较
jQuery和js主要区别在DOM操作 用jQuery必须先引进jQuery.js文件 js和jQuery写在哪: 1.标签里面 常用就是方法调用 2.写在script标签里面 3.js文件 dom操 ...
- NodeJS学习笔记 (2)文件系统操作-fs(ok)
原文:https://github.com/chyingp/nodejs-learning-guide/blob/master/%E6%A8%A1%E5%9D%97/fs.md#%E9%80%9A%E ...
- matplotlib bar函数重新封装
参考: https://blog.csdn.net/jenyzhang/article/details/52047557 https://blog.csdn.net/liangzuojiayi/art ...
- vue-cli3+typescript+路由懒加载报错问题
vue-cli3的版本是3.4.1 出现的情况是网页显示正常,但是终端一直提示找不到模块: 如果去掉路由懒加载的方式,就没有报错: 原因是以前我们习惯直接写文件名而不加后缀, 现在使用ts时就需要写v ...
- canvas 连线曲线图封装
$.fn.hChart=function (opt) { var setting=$.extend({ className:'', data:[] },opt); var tbody=this; va ...
- TreeMap集合怎样依照Value进行排序
------- android培训.java培训.期待与您交流! ---------- 我们知道,TreeMap集合是依照Key进行排序的,怎样依照Value进行排序呢?如今有一个TreeMap集合 ...