1+ package com .baeldung .gson ;
2+
3+ import static org .junit .jupiter .api .Assertions .assertEquals ;
4+ import static org .junit .jupiter .api .Assertions .assertNull ;
5+
6+ import org .junit .jupiter .api .Test ;
7+
8+ import com .baeldung .gson .entities .User ;
9+ import com .google .gson .Gson ;
10+ import com .google .gson .GsonBuilder ;
11+
12+ public class GsonUnitTest {
13+ @ Test
14+ public void givenUserObject_whenSerialized_thenCorrectJsonProduced () {
15+ User user = new User ("John Doe" , 30 , "john.doe@example.com" );
16+ user .setId (12345L );
17+
18+ Gson gson = new GsonBuilder ().excludeFieldsWithoutExposeAnnotation ()
19+ .create ();
20+ String json = gson .toJson (user );
21+
22+ // Verify that name, age, and id are serialized, but email is not
23+ assertEquals ("{\" firstName\" :\" John Doe\" ,\" age\" :30,\" id\" :12345}" , json );
24+ }
25+
26+ @ Test
27+ public void givenJsonInput_whenDeserialized_thenCorrectUserObjectProduced () {
28+ String jsonInput = "{\" firstName\" :\" Jane Doe\" ,\" age\" :25,\" id\" :67890,\" email\" :\" jane.doe@example.com\" }" ;
29+
30+ Gson gson = new GsonBuilder ().excludeFieldsWithoutExposeAnnotation ()
31+ .create ();
32+ User user = gson .fromJson (jsonInput , User .class );
33+
34+ // Verify that name and age are deserialized, but email and id are not
35+ assertEquals ("Jane Doe" , user .getName ());
36+ assertEquals (25 , user .getAge ());
37+ assertEquals (0 , user .getId ());
38+ assertNull (user .getEmail ());
39+ }
40+
41+ @ Test
42+ public void givenJsonWithAlternateNames_whenDeserialized_thenCorrectNameFieldMapped () {
43+ String jsonInput1 = "{\" firstName\" :\" Jane Doe\" ,\" age\" :25,\" id\" :67890,\" email\" :\" jane.doe@example.com\" }" ;
44+ String jsonInput2 = "{\" fullName\" :\" John Doe\" ,\" age\" :30,\" id\" :12345,\" email\" :\" john.doe@example.com\" }" ;
45+ String jsonInput3 = "{\" name\" :\" Alice\" ,\" age\" :28,\" id\" :54321,\" email\" :\" alice@example.com\" }" ;
46+
47+ Gson gson = new GsonBuilder ().excludeFieldsWithoutExposeAnnotation ()
48+ .create ();
49+
50+ User user1 = gson .fromJson (jsonInput1 , User .class );
51+ User user2 = gson .fromJson (jsonInput2 , User .class );
52+ User user3 = gson .fromJson (jsonInput3 , User .class );
53+
54+ // Verify that the name field is correctly deserialized from different JSON field names
55+ assertEquals ("Jane Doe" , user1 .getName ());
56+ assertEquals ("John Doe" , user2 .getName ());
57+ assertEquals ("Alice" , user3 .getName ());
58+ }
59+ }
0 commit comments