diff --git a/core-java-modules/core-java-20/src/main/java/com/baeldung/deserialization/Contact.java b/core-java-modules/core-java-20/src/main/java/com/baeldung/deserialization/Contact.java new file mode 100644 index 0000000000..80df1393af --- /dev/null +++ b/core-java-modules/core-java-20/src/main/java/com/baeldung/deserialization/Contact.java @@ -0,0 +1,5 @@ +package com.baeldung.deserialization; + +public record Contact(String email, String phone) { + // Constructor, getters, and other methods are automatically generated +} diff --git a/core-java-modules/core-java-20/src/main/java/com/baeldung/deserialization/Person.java b/core-java-modules/core-java-20/src/main/java/com/baeldung/deserialization/Person.java new file mode 100644 index 0000000000..38e3882668 --- /dev/null +++ b/core-java-modules/core-java-20/src/main/java/com/baeldung/deserialization/Person.java @@ -0,0 +1,5 @@ +package com.baeldung.deserialization; + +public record Person(String name, int age, String address, Contact contact) { + // Constructor, getters, and other methods are automatically generated +} \ No newline at end of file diff --git a/core-java-modules/core-java-20/src/test/java/com/baeldung/deserialization/DeserializationUnitTest.java b/core-java-modules/core-java-20/src/test/java/com/baeldung/deserialization/DeserializationUnitTest.java new file mode 100644 index 0000000000..1256505e0d --- /dev/null +++ b/core-java-modules/core-java-20/src/test/java/com/baeldung/deserialization/DeserializationUnitTest.java @@ -0,0 +1,39 @@ +package com.baeldung.deserialization; + +import com.google.gson.Gson; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +public class DeserializationUnitTest { + + @Test + public void givenJsonString_whenDeserialized_thenPersonRecordCreated() { + String json = "{\"name\":\"John Doe\",\"age\":30,\"address\":\"123 Main St\"}"; + + Person person = new Gson().fromJson(json, Person.class); + + assertEquals("John Doe", person.name()); + assertEquals(30, person.age()); + assertEquals("123 Main St", person.address()); + } + + @Test + public void givenNestedJsonString_whenDeserialized_thenPersonRecordCreated() { + String json = "{\"name\":\"John Doe\",\"age\":30,\"address\":\"123 Main St\",\"contact\":{\"email\":\"john.doe@example.com\",\"phone\":\"555-1234\"}}"; + + Person person = new Gson().fromJson(json, Person.class); + + assertNotNull(person); + assertEquals("John Doe", person.name()); + assertEquals(30, person.age()); + assertEquals("123 Main St", person.address()); + + Contact contact = person.contact(); + + assertNotNull(contact); + assertEquals("john.doe@example.com", contact.email()); + assertEquals("555-1234", contact.phone()); + } +}