Skip to content

Commit fe23591

Browse files
committed
fix timezone
1 parent 4362aab commit fe23591

File tree

3 files changed

+38
-22
lines changed

3 files changed

+38
-22
lines changed

gson/src/main/java/org/baeldung/gson/entities/ActorGson.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
package org.baeldung.gson.entities;
22

3+
import java.text.DateFormat;
4+
import java.text.SimpleDateFormat;
35
import java.util.Date;
46
import java.util.List;
7+
import java.util.TimeZone;
58

69
public class ActorGson {
710

@@ -18,7 +21,7 @@ public ActorGson(String imdbId, Date dateOfBirth, List<String> filmography) {
1821

1922
@Override
2023
public String toString() {
21-
return "ActorGson [imdbId=" + imdbId + ", dateOfBirth=" + dateOfBirth + ", filmography=" + filmography + "]";
24+
return "ActorGson [imdbId=" + imdbId + ", dateOfBirth=" + formatDateOfBirth() + ", filmography=" + filmography + "]";
2225
}
2326

2427
public String getImdbId() {
@@ -45,5 +48,10 @@ public void setFilmography(List<String> filmography) {
4548
this.filmography = filmography;
4649
}
4750

51+
private String formatDateOfBirth() {
52+
final DateFormat formatter = new SimpleDateFormat("EEE MMM dd hh:mm:ss zzz yyyy");
53+
formatter.setTimeZone(TimeZone.getTimeZone("GMT"));
54+
return formatter.format(dateOfBirth);
55+
}
4856

4957
}

gson/src/main/java/org/baeldung/gson/serialization/ActorGsonDeserializer.java

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,33 @@
11
package org.baeldung.gson.serialization;
22

3-
import com.google.gson.*;
4-
import org.baeldung.gson.entities.ActorGson;
5-
63
import java.lang.reflect.Type;
74
import java.text.ParseException;
85
import java.text.SimpleDateFormat;
96
import java.util.ArrayList;
107

8+
import org.baeldung.gson.entities.ActorGson;
9+
10+
import com.google.gson.JsonArray;
11+
import com.google.gson.JsonDeserializationContext;
12+
import com.google.gson.JsonDeserializer;
13+
import com.google.gson.JsonElement;
14+
import com.google.gson.JsonObject;
15+
import com.google.gson.JsonParseException;
16+
1117
public class ActorGsonDeserializer implements JsonDeserializer<ActorGson> {
1218

13-
private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
19+
private final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX");
1420

1521
@Override
1622
public ActorGson deserialize(JsonElement json, Type type, JsonDeserializationContext jsonDeserializationContext) throws JsonParseException {
1723

18-
JsonObject jsonObject = json.getAsJsonObject();
24+
final JsonObject jsonObject = json.getAsJsonObject();
1925

20-
JsonElement jsonImdbId = jsonObject.get("imdbId");
21-
JsonElement jsonDateOfBirth = jsonObject.get("dateOfBirth");
22-
JsonArray jsonFilmography = jsonObject.getAsJsonArray("filmography");
26+
final JsonElement jsonImdbId = jsonObject.get("imdbId");
27+
final JsonElement jsonDateOfBirth = jsonObject.get("dateOfBirth");
28+
final JsonArray jsonFilmography = jsonObject.getAsJsonArray("filmography");
2329

24-
ArrayList<String> filmList = new ArrayList<String>();
30+
final ArrayList<String> filmList = new ArrayList<String>();
2531
if (jsonFilmography != null) {
2632
for (int i = 0; i < jsonFilmography.size(); i++) {
2733
filmList.add(jsonFilmography.get(i).getAsString());
@@ -31,7 +37,7 @@ public ActorGson deserialize(JsonElement json, Type type, JsonDeserializationCon
3137
ActorGson actorGson = null;
3238
try {
3339
actorGson = new ActorGson(jsonImdbId.getAsString(), sdf.parse(jsonDateOfBirth.getAsString()), filmList);
34-
} catch (ParseException e) {
40+
} catch (final ParseException e) {
3541
// TODO Auto-generated catch block
3642
e.printStackTrace();
3743
}
Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,40 @@
11
package org.baeldung.gson.deserialization;
22

3-
import com.google.gson.Gson;
4-
import com.google.gson.GsonBuilder;
3+
import java.text.ParseException;
4+
55
import org.baeldung.gson.entities.ActorGson;
66
import org.baeldung.gson.entities.Movie;
77
import org.baeldung.gson.serialization.ActorGsonDeserializer;
88
import org.junit.Assert;
99
import org.junit.Test;
1010

11-
import java.text.ParseException;
11+
import com.google.gson.Gson;
12+
import com.google.gson.GsonBuilder;
1213

1314
public class GsonDeserializeTest {
14-
1515
@Test
1616
public void whenSimpleDeserialize_thenCorrect() throws ParseException {
1717

18-
String jsonInput = "{\"imdbId\":\"tt0472043\",\"actors\":" + "[{\"imdbId\":\"nm2199632\",\"dateOfBirth\":\"1982-09-21T12:00:00+01:00\",\"filmography\":" + "[\"Apocalypto\",\"Beatdown\",\"Wind Walkers\"]}]}";
18+
final String jsonInput = "{\"imdbId\":\"tt0472043\",\"actors\":" + "[{\"imdbId\":\"nm2199632\",\"dateOfBirth\":\"Tue Sep 21 11:00:00 GMT 1982\",\"filmography\":" + "[\"Apocalypto\",\"Beatdown\",\"Wind Walkers\"]}]}";
19+
20+
final Gson gson = new GsonBuilder().setDateFormat("EEE MMM dd hh:mm:ss zzz yyyy").create();
1921

20-
Movie outputMovie = new Gson().fromJson(jsonInput, Movie.class);
22+
final Movie outputMovie = gson.fromJson(jsonInput, Movie.class);
2123

22-
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]]]]";
24+
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]]]]";
2325
Assert.assertEquals(outputMovie.toString(), expectedOutput);
2426
}
2527

2628
@Test
2729
public void whenCustomDeserialize_thenCorrect() throws ParseException {
2830

29-
String jsonInput = "{\"imdbId\":\"tt0472043\",\"actors\":" + "[{\"imdbId\":\"nm2199632\",\"dateOfBirth\":\"1982-09-21T12:00:00+01:00\",\"filmography\":" + "[\"Apocalypto\",\"Beatdown\",\"Wind Walkers\"]}]}";
31+
final String jsonInput = "{\"imdbId\":\"tt0472043\",\"actors\":" + "[{\"imdbId\":\"nm2199632\",\"dateOfBirth\":\"1982-09-21T12:00:00+01:00\",\"filmography\":" + "[\"Apocalypto\",\"Beatdown\",\"Wind Walkers\"]}]}";
3032

31-
Gson gson = new GsonBuilder().registerTypeAdapter(ActorGson.class, new ActorGsonDeserializer()).create();
33+
final Gson gson = new GsonBuilder().registerTypeAdapter(ActorGson.class, new ActorGsonDeserializer()).create();
3234

33-
Movie outputMovie = gson.fromJson(jsonInput, Movie.class);
35+
final Movie outputMovie = gson.fromJson(jsonInput, Movie.class);
3436

35-
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]]]]";
37+
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]]]]";
3638
Assert.assertEquals(outputMovie.toString(), expectedOutput);
3739
}
3840
}

0 commit comments

Comments
 (0)