使用反射,实现简单的JSON与Bean之间的转换
2015-12-09 21:11
811 查看
使用反射的bean转Json,
JSONObject json = new JSONObject();
Class<?> objClass = object.getClass();
Field[] fields = objClass.getDeclaredFields();
String strAObjectName;
String strValue = null;
JSONObject jsonB = null;
List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
Map<String, Object> map = null;
try {
System.out.println("---" + object.getClass().getName());
for (int j = 0; j < objClass.getDeclaredFields().length; j++) {
Field field = fields[j];
field.setAccessible(true);// 暴力访问,取消变量的私有权限。让对象可以访问
strAObjectName = fields[j].getName();
System.out.println(strAObjectName+"--->"+field.get(object));
json.accumulate(strAObjectName, field.get(object));
用Field类,获取到bean的属性。再用field.setAccessible(true)取消私有权限。最后一一赋值就好。
Json转Bean的话:
public static Object ToStringJson(Object object, JSONObject o) throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException, UnsupportedEncodingException {
Class<?> objClass = object.getClass();
Field[] fields = objClass.getDeclaredFields();
String strAObjectName;
int i =0;
for (int k = 0; k < objClass.getDeclaredFields().length; k++) {
strAObjectName = fields[k].getName();
Field field = fields[k];
field.setAccessible(true);//暴力访问,取消age的私有权限。让对象可以访问
Iterator it = o.keys();
while (it.hasNext()) {
String key = it.next().toString();
field.set(object, (Object)o.get(key));
转JSON,关键要用到accumulate方法,转Bean,关键是用到set方法。其实很简单的。
JSONObject json = new JSONObject();
Class<?> objClass = object.getClass();
Field[] fields = objClass.getDeclaredFields();
String strAObjectName;
String strValue = null;
JSONObject jsonB = null;
List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
Map<String, Object> map = null;
try {
System.out.println("---" + object.getClass().getName());
for (int j = 0; j < objClass.getDeclaredFields().length; j++) {
Field field = fields[j];
field.setAccessible(true);// 暴力访问,取消变量的私有权限。让对象可以访问
strAObjectName = fields[j].getName();
System.out.println(strAObjectName+"--->"+field.get(object));
json.accumulate(strAObjectName, field.get(object));
用Field类,获取到bean的属性。再用field.setAccessible(true)取消私有权限。最后一一赋值就好。
Json转Bean的话:
public static Object ToStringJson(Object object, JSONObject o) throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException, UnsupportedEncodingException {
Class<?> objClass = object.getClass();
Field[] fields = objClass.getDeclaredFields();
String strAObjectName;
int i =0;
for (int k = 0; k < objClass.getDeclaredFields().length; k++) {
strAObjectName = fields[k].getName();
Field field = fields[k];
field.setAccessible(true);//暴力访问,取消age的私有权限。让对象可以访问
Iterator it = o.keys();
while (it.hasNext()) {
String key = it.next().toString();
field.set(object, (Object)o.get(key));
转JSON,关键要用到accumulate方法,转Bean,关键是用到set方法。其实很简单的。
相关文章推荐
- js将long日期格式转换为标准日期格式
- JSP获取表格中单元格的内容
- JavaScript的基本数据类型的父级
- 轻松学习JavaScript十二:JavaScript基于面向对象之创建对象(二)
- 跟我extjs5(38--单个模块的设计[6获得模块列表数据])
- 【BZOJ4481&JSOI2015】非诚勿扰(数学期望)
- JS 问题集锦
- 对于js浮点数误差问题 完美解决办法
- ArcGIS+API+for+JS测距
- JavaScript中的类与对象
- JS画图
- js 翻页组件 pagination
- json 处理
- [原创作品]一个实用的js倒计时器 postby:zhutty.cnblogs.com
- Ext.js问题重现整理(2)(triggerCls及其他)
- Javascript动态加载Html元素到页面Dom文档结构时执行顺序的不同
- JS操作记录
- JavaScript基础——使用数组
- JS 自制换页函数
- Javascript创建节点