当前位置: 首页 > 编程笔记 >

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

欧阳斌
2023-03-14
本文向大家介绍java 实现反射 json动态转实体类--fastjson,包括了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);
  
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持小牛知识库。如有错误或未考虑完全的地方,望不吝赐教。

 类似资料:
  • 本文向大家介绍java 利用java反射机制动态加载类的简单实现,包括了java 利用java反射机制动态加载类的简单实现的使用技巧和注意事项,需要的朋友参考一下 如下所示: 以上就是小编为大家带来的java 利用java反射机制动态加载类的简单实现的全部内容了,希望对大家有所帮助,多多支持呐喊教程~

  • 本文向大家介绍Java利用反射实现框架类的方法实例,包括了Java利用反射实现框架类的方法实例的使用技巧和注意事项,需要的朋友参考一下 框架类的简单实现 实现步骤: 1. 加载配置文件 2. 获取配置文件中定义的数据 3. 加载该类进内存 主要讲解第一步:加载配置文件 的相关知识。 Properties 是map接口的实现类,它有一个特有的功能:可以保存到流中或者从流中加载。本例中用到它的方法有:

  • 本文向大家介绍spring如何动态指定具体实现类,包括了spring如何动态指定具体实现类的使用技巧和注意事项,需要的朋友参考一下 在写接口实现时,有时会有多个实现类。这篇文章介绍在调用时通过传入字符串来指定具体的实现类。 一.接口与实现类: 在实现类中重写了toString() 方法,可以自定义字符串,当调用时传入指定的字符串就能获取到相应的bean。  二.register书写: 三.测试类:

  • 本文向大家介绍详解Java反射实现Aop代理,包括了详解Java反射实现Aop代理的使用技巧和注意事项,需要的朋友参考一下 利用反射生成JDK的动态代理,也就是AOP中的AOP代理,代替目标对象,从而在代码中织入增强。 定义代理接口 由于JDKf动态代理只能为接口创建动态代理,故先定义接口,假定我们需要对数据的Save方法添加事务处理,我们有一个UserDao接口,里面有一个Save方法,代码如下

  • 本文向大家介绍java 反射和动态代理详解及实例代码,包括了java 反射和动态代理详解及实例代码的使用技巧和注意事项,需要的朋友参考一下 一、java中的反射 1.通过反射加载类的属性和方法实例代码: 2.类加载器ClassLoader 3.动态代理 静态代理:代理类和目标对象的类型都是在编译期间确定下来,不利于程序的扩展。同时每个代理类只能为一个接口服务,这样一来程序开发中必然产生过多的代理。

  • 本文向大家介绍Java实现数组反转翻转的方法实例,包括了Java实现数组反转翻转的方法实例的使用技巧和注意事项,需要的朋友参考一下 数组翻转的方法(java实现),数组翻转,就是将数组倒置,例如原数组为:{"a","b","c","d"},那么翻转后的数组为{"d","c","b","a"}。 【方法一】使用集合个工具类: Collections.reverse(ArrayList) 将数组进行反