评论

收藏

[Java] java 实现反射 json动态转实体类--fastjson

编程语言 编程语言 发布于:2021-09-11 23:31 | 阅读数:366 | 评论:0

这篇文章主要介绍了java 实现反射 json动态转实体类--fastjson,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
我就废话不多说了,大家还是直接看代码吧~
package test.refect; 
public class Student {
  // 姓名
  private String name;
  // 年龄
  private String age;
  // 住址
  private String address;
 
  public String getName() {
    return name;
  }
 
  public void setName(String name) {
    this.name = name;
  }
 
  public String getAge() {
    return age;
  }
 
  public void setAge(String age) {
    this.age = age;
  }
 
  public String getAddress() {
    return address;
  }
 
  public void setAddress(String address) {
    this.address = address;
  }
 
  @Override
  public String toString() {
    return "Student [name=" + name + ", age=" + age + ", address=" + address + "]";
  }
  
  public void sayHello(Book book){
    System.out.println(book.getName());   
  }
}
package test.refect; 
public class Book {
  private String name; 
  public String getName() {
    return name;
  } 
  public void setName(String name) {
    this.name = name;
  } 
}
package test.refect; 
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import com.alibaba.fastjson.JSONObject; 
public class ExecuteWithFastJson { 
  public static <T> void main(String[] args) {
    
    // Student str --> Student 主类
    String str = "test.refect.Student";
    Class<?> clazz = null;
    try {
      clazz = Class.forName(str);
    } catch (ClassNotFoundException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
 
    // Book实体 str --> Book 参数类
    String bookStr = "test.refect.Book";
    Class<?> bookClazz = null;
    try {
      bookClazz = Class.forName(bookStr);
    } catch (ClassNotFoundException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
 
    // json --> Book 将参数类转为JSONOBJECT
    String bookJson = "{"name":"Java"}";
    
 
    // 实例化参数类
    T t = (T) JSONObject.parseObject(bookJson, bookClazz);
    
    // 将参数类注入到主类
    Method method =null;
    try {
      method = clazz.getDeclaredMethod("sayHello", bookClazz);
    } catch (NoSuchMethodException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    } catch (SecurityException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
 
    // 执行主类
    try {
      method.invoke(clazz.newInstance(), t);
    } catch (IllegalAccessException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    } catch (IllegalArgumentException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    } catch (InvocationTargetException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    } catch (InstantiationException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
  }
}
补充:使用fastjson 进行jsonObject转实体类对象
<dependency>
  <groupId>com.alibaba</groupId>
  <artifactId>fastjson</artifactId>
  <version>1.2.7</version>
</dependency>
首先引入相关jar包,
假设有一个实体类User
public class User{
 private int id;
 private String name;  
}
然后通过fastJson进行类型转换
public static void main(String[] args){
  String userString = "{"id":1,"name","lz"}";
  JSONObject userJson = JSONObject.parseObject(userString);
  User user = JSON.toJavaObject(userJson,User.class);
  
}
以上为个人经验,希望能给大家一个参考,也希望大家多多支持CodeAE代码之家。如有错误或未考虑完全的地方,望不吝赐教。
原文链接:https://blog.csdn.net/huanglei1234567890/article/details/80542596

关注下面的标签,发现更多相似文章