//需要字段转换的序列维护public static final Map<String,Integer> o = new HashMap<>();static {o.put("1001", 0);o.put("1002", 1);o.put("1003", 2);o.put("9999", 3);}
实体类
注意,字段需要改为public,否则注解要加到set方法上,这样才能根据alternateNames别名来动态生成字段
如果是json转实体类,将别名注解添加到get方法上
@JSONField(name = "No11",alternateNames = {"No1","No2","No3","No4"})
public String applyItemNo;
转换方法
public static void genReqBySeq(Class clz,String seq) {Field[] fields = clz.getFields();for (Field field : fields) {JSONField fieldAnnotation = field.getAnnotation(JSONField.class);if (fieldAnnotation==null) {continue;}String[] alternateNames = fieldAnnotation.alternateNames();Integer index = o.get(seq);if (alternateNames.length<=index) {continue;}Object handler = Proxy.getInvocationHandler(fieldAnnotation);try {Field f = handler.getClass().getDeclaredField("memberValues");f.setAccessible(true);Map<String, Object> memberValues = (Map<String, Object>) f.get(handler);memberValues.put("name", alternateNames[seq]);} catch (Exception e) {throw BizException.error("实体类添加属性失败:"+clz.getName());}}}