利用java的反射来实现java的类对象转化为json对象
2014-04-02 00:00
465 查看
摘要: 利用java的反射来实现java的类对象转化为json对象
//在写程序的时候我们可以使用反射来使程序看起来更具有“灵性”,也就是可移植性比较强!反射就是能够让程序员在程序运行的时候可以获取对象类型信息。
举个简单的列子:
import java.lang.reflect.Field;
public class Ref {
public static void main(String[] args) {
Persion p = new Persion();
Class c = p.getClass();
Field[] f = c.getDeclaredFields(); //返回 Field 对象的一个数组,这些对象反映此 Class 对象所表示的类或接口所声明的所有字段, 这个是返回所有字段,包括私有属性
for (int i=0; i<f.length; i++) {
System.out.println(f[i]);
}
}
}
class Persion {
public int id;
private String name;
}
打印结果:
public int Persion.id
private java.lang.String Persion.name
从打印结果我们能够看出,这个Field中包含,类属性的访问修饰符,属性类型,以及属性名。同过这些我们可以很方便的来做我们接下来要做的事情。写一个通用的方法,来实现java对象到json对象的转化,虽然有道json jar包已经有了这些功能,但是这不妨挨“重复制造轮子‘,这是一个学习的过程。
首先我们的参数是Object,他可以接受任何类型
public static JSONObject changeJson(Object object) throws Exception {
JSONObject jb = new JSONObject(); //声明json对象
Class c = object.getClass(); //获取类的类型类
Field[] fields = c.getDeclaredFields(); //获取属性集合
Field.setAccessible(fields, true); //在类外面要想获取私有属性的值必须设置
Object[] name = new Object[fields.length]; //存储变量名
Object[] value = new Object[fields.length]; //存储变量值
Object[] type = new Object[fields.length]; //存储变量类型
for (int i = 0; i < fields.length; i++) { //设置数组的值
name[i] = fields[i].getName();
value[i] = fields[i].get(object);
type[i] = fields[i].getType();
}
for (int i = 0; i < name.length; i++) {
String s1 = type[i].toString(); //变量类型
String v1 = value[i] + ""; //变量值
String n1 = name[i].toString(); //变量名
if (s1.contains("String")) {
if (!v1.equals("null")) {
jb.put(n1, v1); //给jsonobject设置key-value
}
} else if (s1.contains("long")) {
jb.put(n1, Integer.parseInt(v1));
} else if (s1.contains("int")) {
jb.put(n1, Integer.parseInt(v1));
}
}
return jb;
}
这个只是简单的小例子,不过在做android开发的时候挺有用的。
源码下载地址
//在写程序的时候我们可以使用反射来使程序看起来更具有“灵性”,也就是可移植性比较强!反射就是能够让程序员在程序运行的时候可以获取对象类型信息。
举个简单的列子:
import java.lang.reflect.Field;
public class Ref {
public static void main(String[] args) {
Persion p = new Persion();
Class c = p.getClass();
Field[] f = c.getDeclaredFields(); //返回 Field 对象的一个数组,这些对象反映此 Class 对象所表示的类或接口所声明的所有字段, 这个是返回所有字段,包括私有属性
for (int i=0; i<f.length; i++) {
System.out.println(f[i]);
}
}
}
class Persion {
public int id;
private String name;
}
打印结果:
public int Persion.id
private java.lang.String Persion.name
从打印结果我们能够看出,这个Field中包含,类属性的访问修饰符,属性类型,以及属性名。同过这些我们可以很方便的来做我们接下来要做的事情。写一个通用的方法,来实现java对象到json对象的转化,虽然有道json jar包已经有了这些功能,但是这不妨挨“重复制造轮子‘,这是一个学习的过程。
首先我们的参数是Object,他可以接受任何类型
public static JSONObject changeJson(Object object) throws Exception {
JSONObject jb = new JSONObject(); //声明json对象
Class c = object.getClass(); //获取类的类型类
Field[] fields = c.getDeclaredFields(); //获取属性集合
Field.setAccessible(fields, true); //在类外面要想获取私有属性的值必须设置
Object[] name = new Object[fields.length]; //存储变量名
Object[] value = new Object[fields.length]; //存储变量值
Object[] type = new Object[fields.length]; //存储变量类型
for (int i = 0; i < fields.length; i++) { //设置数组的值
name[i] = fields[i].getName();
value[i] = fields[i].get(object);
type[i] = fields[i].getType();
}
for (int i = 0; i < name.length; i++) {
String s1 = type[i].toString(); //变量类型
String v1 = value[i] + ""; //变量值
String n1 = name[i].toString(); //变量名
if (s1.contains("String")) {
if (!v1.equals("null")) {
jb.put(n1, v1); //给jsonobject设置key-value
}
} else if (s1.contains("long")) {
jb.put(n1, Integer.parseInt(v1));
} else if (s1.contains("int")) {
jb.put(n1, Integer.parseInt(v1));
}
}
return jb;
}
这个只是简单的小例子,不过在做android开发的时候挺有用的。
源码下载地址
相关文章推荐
- 利用Java反射实现普通对象到JSONObject的转换
- Java利用反射实现对象转json
- 利用java反射来实现输出对象的所有属性值
- Java利用反射实现对象之间相同属性复制
- 学习笔记 JAVA 将 object 转换成为 json 串 利用反射实现
- 利用Java反射实现JavaBean对象相同属性复制并初始化目标对象为空的属性的BeanUtils
- Java -- 利用反射实现对象之间相同属性复制BeanUtil
- JAVA利用反射映射JSON对象为JavaBean
- JAVA利用反射映射JSON对象为JavaBean
- 用java的反射实现将ResultSet自动转化成对象,自动产生sql语句
- 利用Java反射实现JavaBean对象相同属性复制并初始化目标对象为空的属性的BeanUtils
- 利用Java反射实现JavaBean对象相同属性复制并初始化目标对象为空的属性的BeanUtils
- java反射实现对象转JSON(粘贴可用)
- 利用JAXB实现XML文件和Java对象之间的转化
- ObjC 利用反射和KVC实现嵌套对象序列化成JSON数据
- 用java的反射实现将ResultSet自动转化成对象,自动产生sql语句
- (Java 基础知识) json_lib实现java 对象转化为json对象
- 利用泛型和反射对Java对象集合转换成Json的工具类
- java中将jsonObject字符串转化为Map对象
- java中利用反射实现的几个小示例