比较两个对象属性及属性值

本文介绍了一种使用Java反射机制获取对象字段值的方法,并通过示例展示了如何根据特定条件处理这些字段值并将其转换为JSON格式。此外,还介绍了不同场景下字段值的处理方式,包括提供、不提供及脱敏提供。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import java.lang.reflect.Method;
private static Object getFieldValue(Object thisClass, String fieldName)  
       {  
           Object value = new Object();  
           Method method = null;  
           try {  
               String methodName = fieldName.substring(0, 1).toUpperCase()+ fieldName.substring(1);  
               method = thisClass.getClass().getMethod("get" + methodName);  
               value = method.invoke(thisClass);  
           } catch (Exception e) {  
               e.printStackTrace();  
           }    
           return value;  
       }  
public static void main(String args[]) {
        AuthServiceAuthorizeDO authserviceauthorizedo = new AuthServiceAuthorizeDO();
        authserviceauthorizedo.setSv_gis_certified("1");
        authserviceauthorizedo.setSv_gusername("2");
        authserviceauthorizedo.setId("0");
        YongHu yonghu = new YongHu();
        yonghu.setUsername("bbbbb");
        yonghu.setIs_certified("aaaaaaaaaaa");
        yonghu.setId("ddddddddddd");
        Field[] fields1 = authserviceauthorizedo.getClass().getDeclaredFields();//获取属性名称数组  
        Field[] fields2 = yonghu.getClass().getDeclaredFields();//获取属性名称数组  
        for (int i = 0; i < fields1.length; i++) {  
            Object valueObj1 = getFieldValue(authserviceauthorizedo ,fields1[i].getName());//获取属性值            
            for (int j = 0; j < fields2.length; j++) {  
                Object valueObj2 = getFieldValue(yonghu ,fields2[j].getName());//获取属性值
                if(fields1[i].getName().equals("sv_g"+fields2[j].getName())){
                    switch (String.valueOf(valueObj1)) { 
                    case "0":
                        System.out.println("---");
                        break;
                    case "1":  
                        System.out.println(valueObj2);
                        break;
                    case "2":  
                        System.out.println(SensitiveInfoUtils.toConceal(String.valueOf(valueObj2)));
                        break;    
                    }
                }
            }
        }
}

 

UserInfo userinfo = new UserInfo();
JSONObject jsonobj = JSONObject.fromObject(userinfo);
private
static JSONObject JsonObj(String elementName1,String elementName2,Object valueObj1,Object valueObj2,JSONObject jsonobj){ if(elementName1.equals("sv_g"+elementName2)){ switch (String.valueOf(valueObj1)) { case "0": //不提供,先设置值为空,最终统一处理 jsonobj.element(elementName2, ""); break; case "1": //提供 break; case "2": //脱敏提供 jsonobj.element(elementName2, SensitiveInfoUtils.toConceal(String.valueOf(valueObj2))); break; } }else if(elementName1.equals("sv_q"+elementName2)){ switch (String.valueOf(valueObj1)) { case "0": //不提供,属性值也不显示 jsonobj.remove(elementName2); break; case "1": //提供 break; case "2": //脱敏提供 jsonobj.element(elementName2, SensitiveInfoUtils.toConceal(String.valueOf(valueObj2))); break; } } if(jsonobj!=null){ return jsonobj; } return null; }

 

转载于:https://www.cnblogs.com/jassy/p/7509124.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值