我在与Gson合作时遇到了奇怪的错误。
我是这样创建的
import stripe
stripe.api_key = "..."
results = []
result = stripe.Refund.list(limit=100)
while len(result["data"]) >= 100:
last_id = result["data"][99]["id"]
results.extend(result["data"])
result = stripe.Refund.list(limit=100, ending_before=last_id)
if len(result["data"]) > 0:
results.extend(result["data"])
我的json对象是这样的:
mGson = new GsonBuilder().registerTypeAdapter(beelineItemType, new ItemsDeserializer()).setDateFormat("yyyy-MM-dd'T'HH:mm:ss").create();
但是当我尝试反序列化时,出现此错误:
"EpgStartDate" : "2018-08-16T18:00:00"
我不知道在哪里放置时区以及如何放置。我在塞尔维亚,所以在哪里以及如何放置哪个时区。如果有人可以帮助,那将是很棒的:D
答案 0 :(得分:1)
您应该像这样使反序列化器
public class DateDeserializer implements JsonDeserializer<Date> {
@Override
public Date deserialize(JsonElement element, Type arg1, JsonDeserializationContext arg2) throws JsonParseException {
String date = element.getAsString();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
format.setTimeZone(TimeZone.getTimeZone("GMT"));
try {
return format.parse(date);
} catch (ParseException exp) {
System.err.println(exp.getMessage());
return null;
}
}
}
,然后注册上面的反序列化器:
GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.registerTypeAdapter(Date.class, new DateDeserializer());