java如何遍历对象中的所有属性(字段)和类型
更新时间:2023年07月24日 14:12:30 作者:识你老鼠
这篇文章主要介绍了java如何遍历对象中的所有属性(字段)和类型问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
java遍历对象中的所有属性(字段)和类型
业务场景
一个房产交易系统中的业务需求,查询房屋交易状态接口,调用第三方接口返回一个vo对象,该对象的属性主要是描述该房屋的交易情况,
比如是否抵押,是否被查封等,现在需要利用该对象的值决定返回给调用方的返回值。(现在一个对象中有很多个属性,大部分属性的值影响返回结果)
代码:
vo对象:
@Data public class BDCQZTXX { private String fwbm;//房屋编码 private String bdcdyh;//不动产单元号 private String xzqhdm;//行政区划代码 private String sfybdy;//是否ybdy private String sfzgedy;//是否zgedy private String sfzjgcdy;//是否在建工程抵押 private String sfcf;//是否查封 private String sfycf;//是否预查封 private String sfyg;//是否预购 private String sfydy;//是否预抵押 private String sfyy;//是否异议 private String sfdy;//是否抵押 private String sfsd;//是否sd private String sfdj;//是否登记 private String sfzdzr;//是否zdzr private String sfzbyw;//是否在办业务 private String bz;//备注
模拟业务处理(测试)
public static void main(String[] args){ //模拟调用接口返回的对象数据 String s = "{\n" + " \"fwbm\": \"1\",\n" + " \"bdcdyh\": \"1\",\n" + " \"xzqhdm\": \"1\",\n" + " \"sfdy\": \"0\",\n" + " \"sfzjgcdy\": \"0\",\n" + " \"sfcf\": \"0\",\n" + " \"sfyg\": \"0\",\n" + " \"sfydy\": \"0\",\n" + " \"sfyy\": \"0\",\n" + " \"sfdyi\": \"0\",\n" + " \"sfsd\": \"0\",\n" + " \"sfdj\": \"0\",\n" + " \"sfzdzr\": \"0\",\n" + " \"sfzbym\": \"0\",\n" + " \"bz\": \"\"\n" + " }"; //是否可售(0不可售1可售) int sfks = 1; //json字符串转对象(fastjson) BDCQZTXX bdcqztxx =JSONObject.parseObject(s, BDCQZTXX.class); //遍历对象的字段数组 for (Field f : bdcqztxx.getClass().getDeclaredFields()) { f.setAccessible(true);//表示反射对象是否抑制java语言访问 String name = f.getName();//获取字段名称 Object value = f.get(bdcqztxx);//获取对应字段的值 Class<?> type = f.getType();//获取对应字段的类型 System.out.println(type); //不需要判断的字段 if ("FWBM".equals(name) || "BDCDYH".equals(name) || "BZ".equals(name) || "XZQHDM".equals(name)) { System.out.println("当前不影响判断的字段为 "+name + ":" + value); continue; } System.out.println("当前影响判断的字段为 "+name + ":" + value); //需要判断的字段 if ("1".equals(String.valueOf(value))) { //0为不可售 sfks = 0; break; } } if (sfks == 1) { System.out.println("可售"); } if (sfks == 0) { System.out.println("不可售"); } }
就此完成!!!
java遍历对象属性,并将属性值不为空的取出
public void getValue(SelectIdListDto selectIdListDto){ Field[] field = selectIdListDto.getClass().getDeclaredFields(); for(int j=0 ; j<field.length ; j++){ String name = field[j].getName(); name = name.substring(0,1).toUpperCase()+name.substring(1); String type = field[j].getGenericType().toString(); if(type.equals("class java.lang.String")){ Method m; String value; try { m = selectIdListDto.getClass().getMethod("get"+name); value = (String) m.invoke(selectIdListDto); if(value != null && !"".equals(value)){ System.out.println(name); System.out.println(value); } } catch (IllegalAccessException e) { e.printStackTrace(); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } catch (NoSuchMethodException e) { e.printStackTrace(); } catch (SecurityException e) { e.printStackTrace(); } } } }
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
springboot+vue实现websocket配置过程解析
这篇文章主要介绍了springboot+vue实现websocket配置过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下2020-04-04RestTemplate如何通过HTTP Basic Auth认证示例说明
这篇文章主要为大家介绍了RestTemplate如何通过HTTP Basic Auth认证的示例说明,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2022-03-03SpringSecurity+Redis+Jwt实现用户认证授权
SpringSecurity是一个强大且灵活的身份验证和访问控制框架,本文主要介绍了SpringSecurity+Redis+Jwt实现用户认证授权,具有一定的参考价值,感兴趣的可以了解一下2024-07-07
最新评论