java将字段映射成另一个字段,关于 接口传参 字段不对应转换

在接口开发中,常遇到实体类字段与接口所需字段不一致的问题。文中提出两种解决方法,一是新建实体类或用map逐个转移字段,字段多较麻烦;二是新建中间实体类并提取方法,可简单快速转换字段名称。

java将字段映射成另一个字段,关于 接口传参 字段不对应转换

在接口开发中我们经常会遇到一个问题,打个比方,我们的实体类A中有两个字段user和pwd但是接口中需要username和password这怎么办呢,我想到了两种方法:
1.新创建一个实体类B或者new一个map,将A中的字段一个一个取出来再放到B中或者放到map中

这种方法如果字段少的话还好,但若是字段多那就太麻烦了。

2.这种方法我来详细说下:
首先新建一个实体类,我称之为中间实体类,为了简单我就不写那么多字段了

package com.qcr.jituan.sys.service.contract.impl;

import com.fasterxml.jackson.annotation.JsonAlias;
import com.fasterxml.jackson.annotation.JsonProperty;

public class SealSaveFieldSync {



    @JsonProperty("sid")
    private String pkSeal;//主键

    @JsonProperty("bcode")
    private String vssubtypecode;

    @JsonProperty("pname")
    private String vssubtypename;

    @JsonProperty("porg")
    private String vssubordid;

    @JsonProperty("vorgname")
    private String vssubordname;


在这里插入图片描述
说明:数字1对应接口中的参数字段;数字2对应我们实体类中的字段

实体类写好了接下来就是重点了,为了代码的工整,我是直接提取出来一个方法

    /**
     * 实体类转Map
     * @param seal
     * @return
     */
    public static HashMap<String, String> entityToMap(SealVO seal) {
        HashMap<String, String> map = new HashMap();
        for (Field field : seal.getClass().getDeclaredFields()){
            try {
                boolean flag = field.isAccessible();
                field.setAccessible(true);
                Object o = field.get(seal);
                if (o != null){
                    Field contField = SealSaveFieldSync.class.getDeclaredField(field.getName());
                    JsonProperty voField = contField.getAnnotation(JsonProperty.class);
                    String s =  voField.value();
                    map.put(s, o.toString());
                }
                field.setAccessible(flag);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return map;
    }

代码中的seal是我的实体类,通过这种方法我们得到的数据是这样的:
在这里插入图片描述

通过这种方法可以简单快速的将实体类中一个字段名称,转换成了另一个字段!!

感谢阅读!!

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值