fix timezone
This commit is contained in:
parent
4362aab2e1
commit
fe2359144e
|
@ -1,7 +1,10 @@
|
|||
package org.baeldung.gson.entities;
|
||||
|
||||
import java.text.DateFormat;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.TimeZone;
|
||||
|
||||
public class ActorGson {
|
||||
|
||||
|
@ -18,7 +21,7 @@ public class ActorGson {
|
|||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "ActorGson [imdbId=" + imdbId + ", dateOfBirth=" + dateOfBirth + ", filmography=" + filmography + "]";
|
||||
return "ActorGson [imdbId=" + imdbId + ", dateOfBirth=" + formatDateOfBirth() + ", filmography=" + filmography + "]";
|
||||
}
|
||||
|
||||
public String getImdbId() {
|
||||
|
@ -45,5 +48,10 @@ public class ActorGson {
|
|||
this.filmography = filmography;
|
||||
}
|
||||
|
||||
private String formatDateOfBirth() {
|
||||
final DateFormat formatter = new SimpleDateFormat("EEE MMM dd hh:mm:ss zzz yyyy");
|
||||
formatter.setTimeZone(TimeZone.getTimeZone("GMT"));
|
||||
return formatter.format(dateOfBirth);
|
||||
}
|
||||
|
||||
}
|
|
@ -1,27 +1,33 @@
|
|||
package org.baeldung.gson.serialization;
|
||||
|
||||
import com.google.gson.*;
|
||||
import org.baeldung.gson.entities.ActorGson;
|
||||
|
||||
import java.lang.reflect.Type;
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
|
||||
import org.baeldung.gson.entities.ActorGson;
|
||||
|
||||
import com.google.gson.JsonArray;
|
||||
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;
|
||||
|
||||
public class ActorGsonDeserializer implements JsonDeserializer<ActorGson> {
|
||||
|
||||
private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
|
||||
private final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX");
|
||||
|
||||
@Override
|
||||
public ActorGson deserialize(JsonElement json, Type type, JsonDeserializationContext jsonDeserializationContext) throws JsonParseException {
|
||||
|
||||
JsonObject jsonObject = json.getAsJsonObject();
|
||||
final JsonObject jsonObject = json.getAsJsonObject();
|
||||
|
||||
JsonElement jsonImdbId = jsonObject.get("imdbId");
|
||||
JsonElement jsonDateOfBirth = jsonObject.get("dateOfBirth");
|
||||
JsonArray jsonFilmography = jsonObject.getAsJsonArray("filmography");
|
||||
final JsonElement jsonImdbId = jsonObject.get("imdbId");
|
||||
final JsonElement jsonDateOfBirth = jsonObject.get("dateOfBirth");
|
||||
final JsonArray jsonFilmography = jsonObject.getAsJsonArray("filmography");
|
||||
|
||||
ArrayList<String> filmList = new ArrayList<String>();
|
||||
final ArrayList<String> filmList = new ArrayList<String>();
|
||||
if (jsonFilmography != null) {
|
||||
for (int i = 0; i < jsonFilmography.size(); i++) {
|
||||
filmList.add(jsonFilmography.get(i).getAsString());
|
||||
|
@ -31,7 +37,7 @@ public class ActorGsonDeserializer implements JsonDeserializer<ActorGson> {
|
|||
ActorGson actorGson = null;
|
||||
try {
|
||||
actorGson = new ActorGson(jsonImdbId.getAsString(), sdf.parse(jsonDateOfBirth.getAsString()), filmList);
|
||||
} catch (ParseException e) {
|
||||
} catch (final ParseException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
|
|
@ -1,38 +1,40 @@
|
|||
package org.baeldung.gson.deserialization;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.GsonBuilder;
|
||||
import java.text.ParseException;
|
||||
|
||||
import org.baeldung.gson.entities.ActorGson;
|
||||
import org.baeldung.gson.entities.Movie;
|
||||
import org.baeldung.gson.serialization.ActorGsonDeserializer;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.text.ParseException;
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.GsonBuilder;
|
||||
|
||||
public class GsonDeserializeTest {
|
||||
|
||||
@Test
|
||||
public void whenSimpleDeserialize_thenCorrect() throws ParseException {
|
||||
|
||||
String jsonInput = "{\"imdbId\":\"tt0472043\",\"actors\":" + "[{\"imdbId\":\"nm2199632\",\"dateOfBirth\":\"1982-09-21T12:00:00+01:00\",\"filmography\":" + "[\"Apocalypto\",\"Beatdown\",\"Wind Walkers\"]}]}";
|
||||
final String jsonInput = "{\"imdbId\":\"tt0472043\",\"actors\":" + "[{\"imdbId\":\"nm2199632\",\"dateOfBirth\":\"Tue Sep 21 11:00:00 GMT 1982\",\"filmography\":" + "[\"Apocalypto\",\"Beatdown\",\"Wind Walkers\"]}]}";
|
||||
|
||||
Movie outputMovie = new Gson().fromJson(jsonInput, Movie.class);
|
||||
final Gson gson = new GsonBuilder().setDateFormat("EEE MMM dd hh:mm:ss zzz yyyy").create();
|
||||
|
||||
String expectedOutput = "Movie [imdbId=tt0472043, director=null, actors=[ActorGson [imdbId=nm2199632, dateOfBirth=Tue Sep 21 04:00:00 PDT 1982, filmography=[Apocalypto, Beatdown, Wind Walkers]]]]";
|
||||
final Movie outputMovie = gson.fromJson(jsonInput, Movie.class);
|
||||
|
||||
final String expectedOutput = "Movie [imdbId=tt0472043, director=null, actors=[ActorGson [imdbId=nm2199632, dateOfBirth=Tue Sep 21 11:00:00 GMT 1982, filmography=[Apocalypto, Beatdown, Wind Walkers]]]]";
|
||||
Assert.assertEquals(outputMovie.toString(), expectedOutput);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void whenCustomDeserialize_thenCorrect() throws ParseException {
|
||||
|
||||
String jsonInput = "{\"imdbId\":\"tt0472043\",\"actors\":" + "[{\"imdbId\":\"nm2199632\",\"dateOfBirth\":\"1982-09-21T12:00:00+01:00\",\"filmography\":" + "[\"Apocalypto\",\"Beatdown\",\"Wind Walkers\"]}]}";
|
||||
final String jsonInput = "{\"imdbId\":\"tt0472043\",\"actors\":" + "[{\"imdbId\":\"nm2199632\",\"dateOfBirth\":\"1982-09-21T12:00:00+01:00\",\"filmography\":" + "[\"Apocalypto\",\"Beatdown\",\"Wind Walkers\"]}]}";
|
||||
|
||||
Gson gson = new GsonBuilder().registerTypeAdapter(ActorGson.class, new ActorGsonDeserializer()).create();
|
||||
final Gson gson = new GsonBuilder().registerTypeAdapter(ActorGson.class, new ActorGsonDeserializer()).create();
|
||||
|
||||
Movie outputMovie = gson.fromJson(jsonInput, Movie.class);
|
||||
final Movie outputMovie = gson.fromJson(jsonInput, Movie.class);
|
||||
|
||||
String expectedOutput = "Movie [imdbId=tt0472043, director=null, actors=[ActorGson [imdbId=nm2199632, dateOfBirth=Tue Sep 21 12:00:00 PDT 1982, filmography=[Apocalypto, Beatdown, Wind Walkers]]]]";
|
||||
final String expectedOutput = "Movie [imdbId=tt0472043, director=null, actors=[ActorGson [imdbId=nm2199632, dateOfBirth=Tue Sep 21 11:00:00 GMT 1982, filmography=[Apocalypto, Beatdown, Wind Walkers]]]]";
|
||||
Assert.assertEquals(outputMovie.toString(), expectedOutput);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue