{"id":22513419,"url":"https://github.com/emahtab/serialization-and-deserialization","last_synced_at":"2025-03-28T01:23:16.150Z","repository":{"id":260999957,"uuid":"882949432","full_name":"eMahtab/serialization-and-deserialization","owner":"eMahtab","description":"Serialization Deserialization in Java","archived":false,"fork":false,"pushed_at":"2024-11-27T13:03:19.000Z","size":24,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-02T03:19:10.807Z","etag":null,"topics":["jackson-databind","java","serialization-deserialization","serialize"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/eMahtab.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-11-04T05:16:32.000Z","updated_at":"2024-11-27T13:03:23.000Z","dependencies_parsed_at":"2024-11-04T06:20:22.135Z","dependency_job_id":null,"html_url":"https://github.com/eMahtab/serialization-and-deserialization","commit_stats":null,"previous_names":["emahtab/serialization-and-deserialization"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eMahtab%2Fserialization-and-deserialization","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eMahtab%2Fserialization-and-deserialization/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eMahtab%2Fserialization-and-deserialization/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eMahtab%2Fserialization-and-deserialization/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eMahtab","download_url":"https://codeload.github.com/eMahtab/serialization-and-deserialization/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245950632,"owners_count":20699100,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["jackson-databind","java","serialization-deserialization","serialize"],"created_at":"2024-12-07T03:12:18.132Z","updated_at":"2025-03-28T01:23:16.130Z","avatar_url":"https://github.com/eMahtab.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Example 1 : Serialization and Deserialization using Java API\n\n## Step 1 : implement the Serializable interface\n```java\nimport java.io.Serializable;\n\npublic class Person implements Serializable {\n    private static final long serialVersionUID = 1L; // recommended for Serializable classes\n    private String name;\n    private int age;\n    private String address;\n    public Person(String name, int age, String address) {\n        this.name = name;\n        this.age = age;\n        this.address = address;\n    }\n\n    public String getName() {\n        return name;\n    }\n    public int getAge() {\n        return age;\n    }\n    public String getAddress() {\n        return address;\n    }\n    @Override\n    public String toString() {\n        return \"Person{name='\" + name + \"', age=\" + age + \", address='\" + address + \"'}\";\n    }\n}\n```\n\n### Step 2 : Serialize (write) the Serializable object to a file\n```java\nimport java.io.FileOutputStream;\nimport java.io.ObjectOutputStream;\nimport java.io.IOException;\n\npublic class SerializeExample {\n    public static void main(String[] args) {\n        Person person = new Person(\"Alice\", 30, \"123 Main St, Wonderland\");\n\n        try (FileOutputStream fileOut = new FileOutputStream(\"person.ser\");\n             ObjectOutputStream out = new ObjectOutputStream(fileOut)) {\n\n            out.writeObject(person);\n            System.out.println(\"Person object has been serialized to person.ser\");\n\n        } catch (IOException e) {\n            e.printStackTrace();\n        }\n    }\n}\n```\n### Step 3 : Deserialize (read) the object from the file \n```java\nimport java.io.FileInputStream;\nimport java.io.ObjectInputStream;\nimport java.io.IOException;\n\npublic class DeserializeExample {\n    public static void main(String[] args) {\n        try (FileInputStream fileIn = new FileInputStream(\"person.ser\");\n             ObjectInputStream in = new ObjectInputStream(fileIn)) {\n\n            Person person = (Person) in.readObject();\n            System.out.println(\"Deserialized Person object: \" + person);\n\n        } catch (IOException | ClassNotFoundException e) {\n            e.printStackTrace();\n        }\n    }\n}\n```\n\n\n# Example 2 : Serialization and Deserialization using external libraries e.g. Jackson\n```xml\n\u003cdependency\u003e\n\t    \u003cgroupId\u003ecom.fasterxml.jackson.core\u003c/groupId\u003e\n\t    \u003cartifactId\u003ejackson-databind\u003c/artifactId\u003e\n\t    \u003cversion\u003e2.15.2\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n\n```java\n// User.java\npublic class User {\n    private String id;\n    private String name;\n    private int age;\n    // Constructors\n    public User() {\n    }\n    public User(String id, String name, int age) {\n        this.id = id;\n        this.name = name;\n        this.age = age;\n    }\n    // Getters and Setters\n    public String getId() {\n        return id;\n    }\n    public void setId(String id) {\n        this.id = id;\n    }\n    public String getName() {\n        return name;\n    }\n    public void setName(String name) {\n        this.name = name;\n    }\n    public int getAge() {\n        return age;\n    }\n    public void setAge(int age) {\n        this.age = age;\n    }\n    @Override\n    public String toString() {\n        return \"name=\" + name + \", id=\" + id + \", age=\" + age;\n    }\n}\n\n// Jackson.java\nimport com.fasterxml.jackson.core.JsonProcessingException;\nimport com.fasterxml.jackson.databind.ObjectMapper;\n\npublic class Jackson {\n    public static void main(String[] args) {\n        ObjectMapper objectMapper = new ObjectMapper();\n        User user = new User(\"1\", \"Mahtab Alam\", 31);\n        try {\n            String jsonAsString = objectMapper.writeValueAsString(user);\n            System.out.println(jsonAsString);\n            System.out.println(jsonAsString.length());\n\n            String str = \"{\\\"id\\\":\\\"1\\\",\\\"name\\\":\\\"Mahtab Alam\\\",\\\"age\\\":31}\";\n            System.out.println(\"STR :\" + str);\n            System.out.println(str.length());\n            System.out.println(jsonAsString.equals(str)); // true\n\n            User obj = objectMapper.readValue(str, User.class);\n            System.out.println(obj);\n        } catch (JsonProcessingException e) {\n            e.printStackTrace();\n        }\n    }\n}\n```\n\n### Code Execution Output :\n```\n{\"id\":\"1\",\"name\":\"Mahtab Alam\",\"age\":31}\n40\nSTR :{\"id\":\"1\",\"name\":\"Mahtab Alam\",\"age\":31}\n40\ntrue\nname=Mahtab Alam, id=1, age=31\n```\n\n## Some notes regarding storing Serialized Java object JSON as a String\n\n1. The backslash (\\) is an escape character in Java.\n\n2. Placing a backslash before the double quote (\\\") tells the compiler that the double quote is part of the string, not the end of it.\n\n3. When backslash is just one, it does not count towards the String length, length() function\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Femahtab%2Fserialization-and-deserialization","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Femahtab%2Fserialization-and-deserialization","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Femahtab%2Fserialization-and-deserialization/lists"}