第三方返回转换为实体
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));
}
}