java Realizes Reflection json Dynamic Transformation to Entity Classes fastjson

  • 2021-08-21 20:40:05
  • OfStack

I won't talk too much, let's just look at the code ~


package test.refect; 
public class Student {
	//  Name 
	private String name;
	//  Age 
	private String age;
	//  Address 
	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  Main class 
		String str = "test.refect.Student";
		Class<?> clazz = null;
		try {
			clazz = Class.forName(str);
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
 
		// Book Entity  str --> Book  Parameter class 
		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  Convert the parameter class to JSONOBJECT
		String bookJson = "{\"name\":\"Java\"}";
		
 
		//  Instantiate parameter class 
		T t = (T) JSONObject.parseObject(bookJson, bookClazz);
		
		//  Inject the parameter class into the main class 
		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();
		}
 
		//  Execute the main class 
		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();
		}
	}
}

Supplement: jsonObject to Entity Class Objects Using fastjson


<dependency>
  <groupId>com.alibaba</groupId>
  <artifactId>fastjson</artifactId>
  <version>1.2.7</version>
</dependency>

Firstly, the related jar packet is introduced,

Suppose you have 1 entity class User


public class User{
 private int id;
 private String name;  
}

Then type conversion is performed through 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);
  
}

Related articles: