zoukankan      html  css  js  c++  java
  • 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
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25

    说明:数字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;
    }
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    代码中的seal是我的实体类,通过这种方法我们得到的数据是这样的:


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

    感谢阅读!!
    --------------------- 

  • 相关阅读:
    WPF--模板选择
    C#基础知识回顾--委托事件
    WPF刷新界面之坎坷路
    git 复位出现If no other git process is currently running, this probably means a git process crashed in this repo
    winrar 授权破解过期解决
    百度地图经纬度批量查找功能XGeocoding使用手册
    variant conversion error for variable v23
    oracle exp导出加上过滤条件
    office 格式刷双击无法启用连刷模式
    xsl 文件如何定义 Javascript 函数并且调用
  • 原文地址:https://www.cnblogs.com/hyhy904/p/10954426.html
Copyright © 2011-2022 走看看