第三方返回轉(zhuǎn)換為實(shí)體
1.轉(zhuǎn)換工具類
public class ParseUtils {
/**
* 響應(yīng)參數(shù)轉(zhuǎn)義字段.
*/
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 參數(shù)到Map.
*
* @param queryString 解析查詢參數(shù)到Map.
* @return 解析結(jié)果.
*/
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 解析成對(duì)象.
*
* @param map 參數(shù).
* @param clazz 類型
* @param <T> 類型.
* @return 對(duì)象.
*/
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) {
// 轉(zhuǎn)義
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.實(shí)體
@Getter
@Setter
@Schema(description = "UserInfo請(qǐng)求")
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));
}
}