package com.yuyh.sprintnba.http.utils;
import com.google.gson.Gson;
import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonDeserializer;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParseException;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;
import com.google.gson.JsonSyntaxException;
import com.yuyh.sprintnba.http.bean.match.MatchStat.MaxPlayers.MatchPlayerInfo;
import java.lang.reflect.Field;
import java.lang.reflect.Type;
/**
* 处理MatchPlayerInfo字段本该返回对象,却返回空字符串引起的问题(腾讯NBA的Json太多坑了)
*
* @author yuyh.
* @date 2016/7/15.
*/
public class MatchPlayerInfoDefaultAdapter implements JsonSerializer<MatchPlayerInfo>, JsonDeserializer<MatchPlayerInfo> {
@Override
public MatchPlayerInfo deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
try {
if (json.getAsString().equals("")) {
return null;
//return new MatchPlayerInfo();
}
} catch (Exception ignore) {
}
try {
return new Gson().fromJson(json, MatchPlayerInfo.class);
} catch (NumberFormatException e) {
throw new JsonSyntaxException(e);
}
}
@Override
public JsonElement serialize(MatchPlayerInfo src, Type typeOfSrc, JsonSerializationContext context) {
final JsonObject jsonObject = new JsonObject();
Class<?> clz = src.getClass();
Field[] fields = clz.getDeclaredFields();
for (Field field : fields) {
field.setAccessible(true);
try {
jsonObject.addProperty(field.getName(), (String) field.get(src));
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
return jsonObject;
}
}