首页 > 其他分享 >jeecgBoot对象字典解析

jeecgBoot对象字典解析

时间:2023-01-10 10:35:07浏览次数:28  
标签:obj get getName field result jeecgBoot 解析 columns 字典

接口:

interface CommonService

声明:

public JSONObject convertObjDict(Object obj, boolean isIgnore, String... columns);

实现类:

class CommonServiceImpl implements CommonService 实现方法:
public JSONObject convertObjDict(Object obj, boolean isIgnore, String... columns){
        JSONObject result = new JSONObject();
        
        Field[] fields = obj.getClass().getDeclaredFields();
        for (Field field : fields) {
            if (isIgnore) {
                if (Arrays.asList(columns).contains(field.getName()))
                    continue;
            } else {
                if (!Arrays.asList(columns).contains(field.getName()))
                    continue;
            }
            field.setAccessible(true);
            try {
                // 如果是日期,则进行转换
                if (field.getType().equals(Date.class) && field.get(obj) != null) {
                    result.put(field.getName(), DateTime.of((Date) field.get(obj)).toString("yyyy-MM-dd HH:mm:ss"));
                    continue;
                }
                // 如果添加了注解Dict,则解析Dict内容
                if (field.isAnnotationPresent(Dict.class)) {
                    String dictCode = field.getAnnotation(Dict.class).dicCode();
                    Map<String, String> dictMaps = sysBaseAPI.queryDictItemsByCode(dictCode)
                            .stream()
                            .collect(Collectors.toMap(DictModel::getValue, DictModel::getText));

                    result.put(field.getName() + "_dictText", dictMaps.get(field.get(obj).toString()));
                }
                result.put(field.getName(), field.get(obj));
            } catch (Exception e) {
                System.err.println("UtilTools.convertObjToMap 发生错误:" + e.getMessage());
                result.put(field.getName(), "nil");
            }
            field.setAccessible(false);
        }
        return result;
    }

 

标签:obj,get,getName,field,result,jeecgBoot,解析,columns,字典
From: https://www.cnblogs.com/baixiuhua/p/17039371.html

相关文章

  • 元组和字典
    一.元组1.与列表类似,区别在于:①元组用小括号()定义,②元组的元素不能修改2.操作:①交换变量的值        ②元组的方法  .count()和.index()     ......
  • xpath解析数据的方法
    1功能描述21.实例化一个etree对象,且需要将被解析的页面源码数据加载到该对象中32.调用etree对象中的XPath表达式实现标签的定位和内容捕获43.环境安装pipins......
  • Python编程之——推导式解析
    今天这篇文章总结一下Python的推导式,python推导式又叫解析式,是一种独特的数据处理方式,可以从一个数据序列构建另一个新的数据序列的结构体。列表推导式1)表达式  for ......
  • golang 解析xml 同时解析 attr 和 value
    xml长这样<ModifyKeys><ModifyKeyVKCode="91">LWin</ModifyKey><ModifyKeyVKCode="92">RWin</ModifyKey><ModifyKeyV......
  • ThreadLocal源码解析
    一、ThreadLocal概述ThreadLocal是一个线程的本地变量,也就意味着这个变量是线程独有的,是不能与其他线程共享的。这样就可以避免资源竞争带来的多线程的问题。但是,这种解......
  • 2.10 JSON数据及解析
    -------------------------------   ---------------------------------------------------- ......
  • [H264编解码] 第一章 NAL Unit 解析部分
    包装类型:AnnexB和avcCAnnexBAnnexB格式的原理非常简单,就是在一个NALU前面加上三个或者四个字节,这些字节的内容是0001或者001。当我们读取一个H264流的时......
  • manim 4.0 源码解析
    这一切都可以在 https://docs.manim.community/en/stable/guides/deep_dive.html 中找到首先,我们知道,manim的主要组成部分为:mobject,animation和scene其中,我们只要......
  • Json-Tutorial05 数组解析
    前言本节将要学习的是第一种复合类型的解析:数组。具体的解析规则在Tutorial中已经有了,概括下简单的思想就是遇到[符号之后挨个调用lept_parse_value来解析数组的每一个元......
  • ThreadLocal源码解析及实战应用
    作者:京东物流闫鹏勃1什么是ThreadLocal?ThreadLocal是一个关于创建线程局部变量的类。通常情况下,我们创建的变量是可以被任何一个线程访问并修改的。而使用ThreadLocal......