日游记篇(三)/集合字段转换器

反射实现,可根据需要实行更改

简单实现


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;
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值