java 实现反射 json动态转实体类--fastjson
我就废话不多说了,大家还是直接看代码吧~
packagetest.refect;
publicclassStudent{
//姓名
privateStringname;
//年龄
privateStringage;
//住址
privateStringaddress;
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicStringgetAge(){
returnage;
}
publicvoidsetAge(Stringage){
this.age=age;
}
publicStringgetAddress(){
returnaddress;
}
publicvoidsetAddress(Stringaddress){
this.address=address;
}
@Override
publicStringtoString(){
return"Student[name="+name+",age="+age+",address="+address+"]";
}
publicvoidsayHello(Bookbook){
System.out.println(book.getName());
}
}
packagetest.refect;
publicclassBook{
privateStringname;
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
}
packagetest.refect;
importjava.lang.reflect.InvocationTargetException;
importjava.lang.reflect.Method;
importcom.alibaba.fastjson.JSONObject;
publicclassExecuteWithFastJson{
publicstaticvoidmain(String[]args){
//Studentstr-->Student主类
Stringstr="test.refect.Student";
Class>clazz=null;
try{
clazz=Class.forName(str);
}catch(ClassNotFoundExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
//Book实体str-->Book参数类
StringbookStr="test.refect.Book";
Class>bookClazz=null;
try{
bookClazz=Class.forName(bookStr);
}catch(ClassNotFoundExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
//json-->Book将参数类转为JSONOBJECT
StringbookJson="{\"name\":\"Java\"}";
//实例化参数类
Tt=(T)JSONObject.parseObject(bookJson,bookClazz);
//将参数类注入到主类
Methodmethod=null;
try{
method=clazz.getDeclaredMethod("sayHello",bookClazz);
}catch(NoSuchMethodExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(SecurityExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
//执行主类
try{
method.invoke(clazz.newInstance(),t);
}catch(IllegalAccessExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(IllegalArgumentExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(InvocationTargetExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(InstantiationExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
}
补充:使用fastjson进行jsonObject转实体类对象
com.alibaba fastjson 1.2.7
首先引入相关jar包,
假设有一个实体类User
publicclassUser{
privateintid;
privateStringname;
}
然后通过fastJson进行类型转换
publicstaticvoidmain(String[]args){
StringuserString="{"id":1,"name","lz"}";
JSONObjectuserJson=JSONObject.parseObject(userString);
Useruser=JSON.toJavaObject(userJson,User.class);
}
以上为个人经验,希望能给大家一个参考,也希望大家多多支持毛票票。如有错误或未考虑完全的地方,望不吝赐教。