2022-09-29

第三方返回转换为实体

1.转换工具类

public class ParseUtils {

    /**
     * 响应参数转义字段.
     */
    private static final HashMap<String, String> KEY1_KEY2_MAP = new HashMap<>();

    static {
        KEY1_KEY2_MAP.put("user_name", "userName");
        KEY1_KEY2_MAP.put("open_id", "openId");
        KEY1_KEY2_MAP.put("img_url", "imgUrl");
    }

    /**
     * 解析URI 参数到Map.
     *
     * @param queryString 解析查询参数到Map.
     * @return 解析结果.
     */
    public static Map<String, Object> parse(String queryString) {
        Objects.requireNonNull(queryString);
        if (queryString.startsWith("{")) {
            return JSONObject.parseObject(queryString).getInnerMap();
        } else {
            final HashMap<String, Object> result = new HashMap<>();
            for (String item : queryString.split("&")) {
                final int index = item.indexOf("=");
                if (index <= 0) {
                    continue;
                }
                final String key = item.substring(0, index).trim();
                final String value = URLDecoder.decode(item.substring(index + 1).trim(), StandardCharsets.UTF_8).trim();
                result.put(key, value);
            }
            return result;
        }
    }

    /**
     * Map 解析成对象.
     *
     * @param map   参数.
     * @param clazz 类型
     * @param <T>   类型.
     * @return 对象.
     */
    public static <T> T parse(Map<String, Object> map, Class<T> clazz) {
        return JSONObject.toJavaObject(new JSONObject(transfer(map)), clazz);
    }

    private static Map<String, Object> transfer(Map<String, Object> responseMap) {
        // 转义
        final HashMap<String, Object> transferMap = new HashMap<>();
        for (String key : responseMap.keySet()) {
            final String newKey = KEY1_KEY2_MAP.get(key);
            if (StringUtils.isNotBlank(newKey)) {
                transferMap.put(newKey, responseMap.get(key));
            }
        }
        responseMap.putAll(transferMap);
        return responseMap;
    }
}

2.实体

@Getter
@Setter
@Schema(description = "UserInfo请求")
public class MpUserInfoRequest {

    @Schema(description = "openId")
    private String openId;

    @Schema(description = "昵称")
    private String userName;

    @Schema(description = "头像")
    private String imgUrl;

}

3.Main方法

public class Main {
    public static void main(String[] args) throws Exception {
        String data="I0d26VEAESvo5NdJKtJtsaYc6bhijA4MQ+OLUZZWH0NKslwSWpFF1c6B7NM2V+k/8WAGQmU+F6+3M4ruMZzJLtBrSOc2tWlNOJ0y6cv6WkHdNroXkcvniWp3lw6Nd7CXlynhMw1hRPbFEK8sB7EgwKhtKcHg66hFHPkJ0VSBONfue2h1Ka4DITu80J5i4a//xKwIn+YvSEEseSRGw2LJovqrjH0BXloxUF2HhT6iZQpsfPziguFgAyb9ejWxH/75w74Hoitf9FVEx8aowp4GOBFXbZ9cbR7tlckNpadULtc64V2IKhU2CGJFH2DMHVK29nD1XUsh3vFfeMR1qAGGfA==";
        String decryptData = SignatureUtils.decrypt(data, ScBankConstants.privateKey, "RSA", "UTF-8");
        System.out.println(decryptData);
        final Map<String, Object> parse = ParseUtils.parse(decryptData);
        System.out.println(JSON.toJSONString(parse));
        final MpUserInfoRequest parse1 = ParseUtils.parse(parse, MpUserInfoRequest.class);
        System.out.println(JSON.toJSONString(parse1));
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 用到的组件 1、通过CocoaPods安装 2、第三方类库安装 3、第三方服务 友盟社会化分享组件 友盟用户反馈 ...
    SunnyLeong阅读 14,781评论 1 180
  • 目录 第一部分:迈出第一步 第一章:初识Camel[https://www.jianshu.com/p/7237d...
    basic13阅读 5,589评论 0 8
  • 感恩的魔力:数算你的恩福! 你一定曾听人说过知足常乐,心中常念想值得感恩 的事情,你就做到了知足常乐。可你或许没意...
    d730116a0107阅读 136评论 0 1
  • 我是来自湖南省株洲市攸县,现毕业于湖南省商业技师学院,是财经商贸系电子商务1914班的一名学生颜煜恒。 我对于新媒...
    颜煜恒阅读 310评论 0 0
  • 仿佛又回到了几年前在衡阳地区跑业务的日子,2012年6月份开始,到2020年1月份,每天不是在幼儿园,就是在去幼儿...
    路上的谢小谢阅读 142评论 0 1