import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import java.util.Map;
/**
* by Chris
*/
@Slf4j
public class FieldAdapter {
/**
* json对象适配器
*
* @param jsonObject 接口中返回的json数据
* @param link 对象属性对应的json中的键(key:对象的属性名,value:json的属性名)
* @param c 最终要生成的对象
* @param <T>
* @return
*/
public <T> T filter(JSONObject jsonObject, Map<String, String> link, Class<T> c) {
try {
T t = c.newInstance();
for (String key : link.keySet()) {
Object val = jsonObject.get(link.get(key));
try {
c.getMethod("set" + key.substring(0, 1).toUpperCase() + key.substring(1), String.class)
.invoke(t, val.toString());
} catch (NoSuchMethodException e) {
log.info(e.toString());
}
}
return t;
} catch (Exception e) {
log.info("属性适配失败:", e);
}
return null;
}
}
那就赶快测试一下吧
public static void main(String[] args) {
Map link = Maps.newHashMap();
link.put("accessToken", "access_token");
link.put("refreshToken", "refresh_token");
link.put("idToken", "id_token");
link.put("tokenType", "token_type");
link.put("scope", "scope");
link.put("a", "b");
JSONObject jsonObject = new JSONObject();
jsonObject.put("access_token", "423");
jsonObject.put("refresh_token", "64576");
jsonObject.put("id_token", "adgfgsdfg");
jsonObject.put("token_type", "dsfgsfhaz");
jsonObject.put("scope", "adsDASD");
FieldAdapter fieldAdapter = new FieldAdapter();
AuthToken authToken = fieldAdapter.filter(JsonParserUtil.parser(jsonObject), link, AuthToken.class);
System.out.println(authToken);
}