反射实现,可根据需要实行更改
简单实现
package com.tianmiao.demo.util;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Configuration;
import java.lang.reflect.Field;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* 反射转换操作工具类
*/
@Configuration
public class ClassUtils {
private static final Logger logger = LoggerFactory.getLogger(ClassUtils.class);
/**
* @param jsonObject
* @param object
* @return 反射转换
* @throws IllegalAccessException
*/
public static Object toJSON(String jsonObject, Object object) throws IllegalAccessException {
Field[] fields = object.getClass().getSuperclass().getDeclaredFields();
Field[] fields1 = object.getClass().getDeclaredFields();
JSONObject jsonObject1 = JSON.parseObject(jsonObject);
object = toFileid(fields, object, jsonObject1);
object = toFileid(fields1, object, jsonObject1);
return object;
}
/**
* @param objects
* @return 反射转换(List集合)
* @throws IllegalAccessException
*/
public static <T> T toListJSON(List<T> objects, Object object) throws IllegalAccessException {
List<Object> objectList = new ArrayList<>();
StringBuffer arr = new StringBuffer();
arr.append("[");
for (Object oss : objects) {
Class lazz = oss.getClass();
Class lass = object.getClass();
Field[] fields = lazz.getDeclaredFields();
Field[] fields1 = lass.getSuperclass().getDeclaredFields();
int sum = fields.length;
int count = 0;
arr.append("{");
for (Field field : fields) {
field.setAccessible(true);
for (Field field1 : fields1) {
if (field1.getName().equals(field.getName())) {
System.out.println("属性名:" + field.getName() + " 属性类型:" + field.getType().getSimpleName());
field1.setAccessible(true);
count++;
// int,Long,Integer,BigDecimal,double类型
if (field.getType().getTypeName().equals("int")
|| field.getType().getTypeName().equals("Integer")
|| field.getType().getSimpleName().equals("Long")
|| field.getType().getSimpleName().equals("BigDecimal")
|| field.getType().getSimpleName().equals("double")
|| field.getType().getSimpleName().equals("long")
|| field.getType().getSimpleName().equals("short")
|| field.getType().getSimpleName().equals("bite")
|| field.getType().getSimpleName().equals("float")) {
if (count >= sum) {
arr.append("\"" + field1.getName() + "\":" + field.get(oss) + "},");
} else {
arr.append("\"" + field1.getName() + "\":" + field.get(oss) + ",");
}
}
//String类型
if (field.getType().getSimpleName().equals("String")) {
if (count >= sum) {
arr.append("\"" + field1.getName() + "\":" + "\"" + field.get(oss) + "\"" + "},");
} else {
arr.append("\"" + field1.getName() + "\":" + "\"" + field.get(oss) + "\"" + ",");
}
}
//Date类型
if (field.getType().getSimpleName().equals("Date")) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
if (count >= sum) {
arr.append("\"" + field1.getName() + "\":" + "\"" + sdf.format(field.get(oss)) + "\"" + "},");
} else {
arr.append("\"" + field1.getName() + "\":" + "\"" + sdf.format(field.get(oss)) + "\"" + ",");
}
}
}
}
}
objectList.add(object);
}
String brr = arr.substring(0, arr.lastIndexOf(","));
brr += "]";
return (T) brr;
}
private static Object toFileid(Field[] fields, Object object, JSONObject jsonObject) throws IllegalAccessException {
for (Field field : fields) {
field.setAccessible(true);
Class ss = field.getType();
if (ss.getTypeName() instanceof String) {
field.set(object, jsonObject.getString(field.getName()));
}
}
return object;
}
}