{"id":9638,"date":"2013-03-12T10:00:30","date_gmt":"2013-03-12T08:00:30","guid":{"rendered":"http:\/\/www.javacodegeeks.com\/?p=9638"},"modified":"2013-03-12T06:08:31","modified_gmt":"2013-03-12T04:08:31","slug":"serialization-in-java","status":"publish","type":"post","link":"https:\/\/www.javacodegeeks.com\/2013\/03\/serialization-in-java.html","title":{"rendered":"Serialization in java"},"content":{"rendered":"<p>Java provides mechanism called serialization to persists java objects in a form of ordered or sequence of bytes that includes the object&#8217;s data as well as information about the object&#8217;s type and the types of data stored in the object. So if we have serialize any object then it can be read and deserialize it using object&#8217;s type and other information so we can retrieve original object.<\/p>\n<p>Classes ObjectInputStream and ObjectOutputStream are high-level streams that contain the methods for serializing and deserializing an object. ObjectOutputStream has many method for serializing object but commonly used method is:<br \/>\n&nbsp;<br \/>\n&nbsp;<\/p>\n<pre class=\" brush:java\">    private void writeObject(ObjectOutputStream os) throws IOException\r\n    { \r\n\r\n    }<\/pre>\n<p>Similarly ObjectInputStream has<\/p>\n<pre class=\" brush:java\">    private void readObject(ObjectInputStream is) throws IOException, ClassNotFoundException\r\n    {\r\n\r\n    }<\/pre>\n<h2> Need of Serialization?<\/h2>\n<p>Serialization is usually used When the need arises to send your data over network or stored in files. By data I mean objects and not text. Now the problem is your Network infrastructure and your Hard disk are hardware components that understand bits and bytes but not Java objects. Serialization is the translation of your Java object&#8217;s values\/states to bytes to send it over network or save it.On other hand,Deserialization is conversion of byte code to corresponding java objects.<\/p>\n<h2> Concept of serialVersionUID : <\/h2>\n<p>SerialVersionUID is used to ensure that same object(That was used during Serialization) is loaded during Deserialization.serialVersionUID is used for version control of object.You can read more at <a href=\"http:\/\/javapostsforlearning.blogspot.in\/2013\/03\/serialversionuid-in-java-serialization.html\" target=\"_blank\">serialVersionUID in java serialization<\/a><\/p>\n<h2>For Serialization:<\/h2>\n<p>Steps are :<\/p>\n<p style=\"text-align: center;\"><a href=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2013\/03\/SerializationMechanism.jpg\"><img decoding=\"async\" class=\"aligncenter\" style=\"border: 0px none;\" alt=\"\" src=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2013\/03\/SerializationMechanism.jpg\" width=\"521\" height=\"322\" border=\"0\" \/><\/a><\/p>\n<p>Lets take an example: Create Employee.java in src-&gt;org.arpit.javapostsforlearning:<\/p>\n<h4>1.Employee.java <\/h4>\n<pre class=\" brush:java\">package org.arpit.javapostsforlearning;\r\nimport java.io.Serializable;\r\npublic class Employee implements Serializable{\r\n\r\n    int employeeId;\r\n    String employeeName;\r\n    String department;\r\n\r\n    public int getEmployeeId() {\r\n        return employeeId;\r\n    }\r\n    public void setEmployeeId(int employeeId) {\r\n        this.employeeId = employeeId;\r\n    }\r\n    public String getEmployeeName() {\r\n        return employeeName;\r\n    }\r\n    public void setEmployeeName(String employeeName) {\r\n        this.employeeName = employeeName;\r\n    }\r\n    public String getDepartment() {\r\n        return department;\r\n    }\r\n    public void setDepartment(String department) {\r\n        this.department = department;\r\n    }\r\n}<\/pre>\n<p>As you can see above,if you want to serialize any class then <b>it must implement Serializable interface which is marker interface. <\/b><\/p>\n<p>Marker interface in Java is interfaces with no field or methods or in simple word empty interface in java is called marker interface. Create SerializeMain.java in src-&gt;org.arpit.javapostsforlearning<\/p>\n<h4>2.SerializeMain.java<\/h4>\n<pre class=\" brush:java\">package org.arpit.javapostsforlearning;\r\nimport java.io.FileOutputStream;\r\nimport java.io.IOException;\r\nimport java.io.ObjectOutputStream;\r\n public class SerializeMain {\r\n\r\n \/**\r\n  * @author Arpit Mandliya\r\n  *\/\r\n public static void main(String[] args) {\r\n\r\n  Employee emp = new Employee();\r\n  emp.setEmployeeId(101);\r\n  emp.setEmployeeName('Arpit');\r\n  emp.setDepartment('CS');\r\n  try\r\n  {\r\n   FileOutputStream fileOut = new FileOutputStream('employee.ser');\r\n   ObjectOutputStream outStream = new ObjectOutputStream(fileOut);\r\n   outStream.writeObject(emp);\r\n   outStream.close();\r\n   fileOut.close();\r\n  }catch(IOException i)\r\n  {\r\n   i.printStackTrace();\r\n  }\r\n }\r\n}<\/pre>\n<h4>For Deserialization:<\/h4>\n<p>Steps are:<\/p>\n<p style=\"text-align: center;\"><a href=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2013\/03\/DeserializationMechanism.jpg\"><img decoding=\"async\" class=\"aligncenter\" style=\"border: 0px none;\" alt=\"\" src=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2013\/03\/DeserializationMechanism.jpg\" width=\"428\" height=\"319\" border=\"0\" \/><\/a><\/p>\n<p>Create DeserializeMain.java in src-&gt;org.arpit.javapostsforlearning<\/p>\n<h4>3.DeserializeMain.java<\/h4>\n<pre class=\" brush:java\">package org.arpit.javapostsforlearning;\r\nimport java.io.IOException;\r\nimport java.io.ObjectInputStream;\r\n\r\npublic class DeserializeMain {\r\n \/**\r\n  * @author Arpit Mandliya\r\n  *\/\r\n public static void main(String[] args) {\r\n\r\n  Employee emp = null;\r\n       try\r\n       {\r\n          FileInputStream fileIn =new FileInputStream('employee.ser');\r\n          ObjectInputStream in = new ObjectInputStream(fileIn);\r\n          emp = (Employee) in.readObject();\r\n          in.close();\r\n          fileIn.close();\r\n       }catch(IOException i)\r\n       {\r\n          i.printStackTrace();\r\n          return;\r\n       }catch(ClassNotFoundException c)\r\n       {\r\n          System.out.println('Employee class not found');\r\n          c.printStackTrace();\r\n          return;\r\n       }\r\n       System.out.println('Deserialized Employee...');\r\n       System.out.println('Emp id: ' + emp.getEmployeeId());\r\n       System.out.println('Name: ' + emp.getEmployeeName());\r\n       System.out.println('Department: ' + emp.getDepartment());\r\n }\r\n}<\/pre>\n<h4> 4.Run it:<\/h4>\n<p>First run SerializeMain.java then DeserializeMain.java and you will get following output:<\/p>\n<pre class=\" brush:java\">Deserialized Employee...\r\nEmp id: 101\r\nName: Arpit\r\nDepartment: CS<\/pre>\n<p>So we have serialize an employee object and then deserialized it.It seems very simple but it can be very complex when reference object,inheritance come into the picture.So we will see different cases one by one and how we can apply serialization in different scenarios.<\/p>\n<h2> Case 1-What if an object has a reference to other objects<\/h2>\n<p>We have seen very simple case of serialization,now what if it also a reference to other objects.How will it serialized then? will reference object will also get serialized?.Yes,You don&#8217;t have to explicitly serialize reference objects.When you serialize any object and if it contain any other object reference then Java serialization serialize that object&#8217;s entire object graph.<\/p>\n<p>For example:Lets say,Employee now has reference to address object and Address can have reference to some other object(e.g.Home) then when you serialize Employee object all other reference objects such as address and home will be automatically serialized. Lets create Address class and add object of Address as a reference to above employee class.<\/p>\n<h4>Employee.java:<\/h4>\n<pre class=\" brush:java\">package org.arpit.javapostsforlearning;\r\nimport java.io.Serializable;\r\n\r\npublic class Employee implements Serializable{\r\n\r\n int employeeId;\r\n String employeeName;\r\n String department;\r\n Address address;\r\n\r\n public int getEmployeeId() {\r\n  return employeeId;\r\n }\r\n public void setEmployeeId(int employeeId) {\r\n  this.employeeId = employeeId;\r\n }\r\n public String getEmployeeName() {\r\n  return employeeName;\r\n }\r\n public void setEmployeeName(String employeeName) {\r\n  this.employeeName = employeeName;\r\n }\r\n public String getDepartment() {\r\n  return department;\r\n }\r\n public void setDepartment(String department) {\r\n  this.department = department;\r\n }\r\n public Address getAddress() {\r\n  return address;\r\n }\r\n public void setAddress(Address address) {\r\n  this.address = address;\r\n }\r\n}<\/pre>\n<p>Create Address.java in org.arpit.javapostsforlearning:<div style=\"display:inline-block; margin: 15px 0;\"> <div id=\"adngin-JavaCodeGeeks_incontent_video-0\" style=\"display:inline-block;\"><\/div> <\/div><\/p>\n<h4>Address.java:<\/h4>\n<pre class=\" brush:java\">package org.arpit.javapostsforlearning;\r\npublic class Address {\r\n\r\n int homeNo;\r\n String street;\r\n String city;\r\n public Address(int homeNo, String street, String city) {\r\n  super();\r\n  this.homeNo = homeNo;\r\n  this.street = street;\r\n  this.city = city;\r\n }\r\n public int getHomeNo() {\r\n  return homeNo;\r\n }\r\n public void setHomeNo(int homeNo) {\r\n  this.homeNo = homeNo;\r\n }\r\n public String getStreet() {\r\n  return street;\r\n }\r\n public void setStreet(String street) {\r\n  this.street = street;\r\n }\r\n public String getCity() {\r\n  return city;\r\n }\r\n public void setCity(String city) {\r\n  this.city = city;\r\n }\r\n}<\/pre>\n<p>Create SerializeDeserializeMain.java in org.arpit.javapostsforlearning:<\/p>\n<h4>SerializeDeserializeMain.java:<\/h4b>\n<pre class=\" brush:java\">package org.arpit.javapostsforlearning;\r\nimport java.io.FileInputStream;\r\nimport java.io.FileOutputStream;\r\nimport java.io.IOException;\r\nimport java.io.ObjectInputStream;\r\nimport java.io.ObjectOutputStream;\r\n\r\npublic class SerializeDeserializeMain {\r\n \/**\r\n  * @author Arpit Mandliya\r\n  *\/\r\n public static void main(String[] args) {\r\n\r\n  Employee emp = new Employee();\r\n  emp.setEmployeeId(101);\r\n  emp.setEmployeeName('Arpit');\r\n  emp.setDepartment('CS');\r\n  Address address=new Address(88,'MG road','Pune');\r\n  emp.setAddress(address);\r\n  \/\/Serialize\r\n  try\r\n  {\r\n   FileOutputStream fileOut = new FileOutputStream('employee.ser');\r\n   ObjectOutputStream outStream = new ObjectOutputStream(fileOut);\r\n   outStream.writeObject(emp);\r\n   outStream.close();\r\n   fileOut.close();\r\n  }catch(IOException i)\r\n  {\r\n   i.printStackTrace();\r\n  }\r\n\r\n  \/\/Deserialize\r\n  emp = null;\r\n  try\r\n  {\r\n   FileInputStream fileIn =new FileInputStream('employee.ser');\r\n   ObjectInputStream in = new ObjectInputStream(fileIn);\r\n   emp = (Employee) in.readObject();\r\n   in.close();\r\n   fileIn.close();\r\n  }catch(IOException i)\r\n  {\r\n   i.printStackTrace();\r\n   return;\r\n  }catch(ClassNotFoundException c)\r\n  {\r\n   System.out.println('Employee class not found');\r\n   c.printStackTrace();\r\n   return;\r\n  }\r\n  System.out.println('Deserialized Employee...');\r\n  System.out.println('Emp id: ' + emp.getEmployeeId());\r\n  System.out.println('Name: ' + emp.getEmployeeName());\r\n  System.out.println('Department: ' + emp.getDepartment());\r\n  address=emp.getAddress();\r\n  System.out.println('City :'+address.getCity());\r\n }\r\n}<\/pre>\n<h4>Run it :<\/h4>\n<p>When you run SerializeDeserializeMain.java.You will get following output:<\/p>\n<pre class=\" brush:java\">java.io.NotSerializableException: org.arpit.javapostsforlearning.Address\r\n    at java.io.ObjectOutputStream.writeObject0(Unknown Source)\r\n    at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)\r\n    at java.io.ObjectOutputStream.writeSerialData(Unknown Source)\r\n    at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)\r\n    at java.io.ObjectOutputStream.writeObject0(Unknown Source)\r\n    at java.io.ObjectOutputStream.writeObject(Unknown Source)<\/pre>\n<p>We got exception what went wrong.I forgot to mention,Address class must also be serializable.So you have to make Address serializable by implement serialzable interface.<\/p>\n<h4>Address.java:<\/h4>\n<pre class=\" brush:java\">import java.io.Serializable;\r\n\r\npublic class Address implements Serializable{\r\n\r\n int homeNo;\r\n String street;\r\n String city;\r\n public Address(int homeNo, String street, String city) {\r\n  super();\r\n  this.homeNo = homeNo;\r\n  this.street = street;\r\n  this.city = city;\r\n } \r\n public int getHomeNo() {\r\n  return homeNo;\r\n }\r\n public void setHomeNo(int homeNo) {\r\n  this.homeNo = homeNo;\r\n }\r\n public String getStreet() {\r\n  return street;\r\n }\r\n public void setStreet(String street) {\r\n  this.street = street;\r\n }\r\n public String getCity() {\r\n  return city;\r\n }\r\n public void setCity(String city) {\r\n  this.city = city;\r\n }\r\n}<\/pre>\n<h4>Run again:<\/h4>\n<p>When you run again SerializeDeserializeMain.java.You will get following output:<\/p>\n<pre class=\" brush:java\">Deserialized Employee...  \r\nEmp id: 101  \r\nName: Arpit  \r\nDepartment: CS  \r\nCity: Pune<\/pre>\n<h2>Case 2:What if you don&#8217;t have access to reference object&#8217;s source code(e.g you don&#8217;t have access to above Address class)<\/h2>\n<p>If you don&#8217;t have access to address class then how will you implement serializable interface in Address class.Is there any alternative to that? yes there is,You can create another class which extends address and make it serialzable but It can fails in many cases:<\/p>\n<ul>\n<li>What if class is declared as final<\/li>\n<li>What if class have reference to other non serializable object.<\/li>\n<\/ul>\n<p>So then how will you serialize Employee object? so solution is you can make it transient.If you don&#8217;t want to serialize any field then make it transient.<\/p>\n<pre class=\" brush:java\">transient Address address<\/pre>\n<p>So after making address transient in Employee class when you run program.You will get nullPointerException because during deserialization address reference will be null<\/p>\n<h2>Case 3:What if you still want to save state of reference object(e.g above address object):<\/h2>\n<p>If you make address transient then during deserialization it will return null.But what if you still want to have same state as when you have serialized address object.Java serialization provides a mechnism such that if you have private methods with particular signature then they will get called during serialization and deserialization so we will override writeObject and readObject method of employee class and they will be called during serialization and deserialization of Employee object.<\/p>\n<h4>Employee.java:<\/h4>\n<pre class=\" brush:java\">package org.arpit.javapostsforlearning;\r\nimport java.io.IOException;\r\nimport java.io.ObjectInputStream;\r\nimport java.io.ObjectOutputStream;\r\nimport java.io.Serializable;\r\n\r\npublic class Employee implements Serializable{\r\n\r\n int employeeId;\r\n String employeeName;\r\n String department;\r\n transient Address address;\r\n\r\n public int getEmployeeId() {\r\n  return employeeId;\r\n }\r\n public void setEmployeeId(int employeeId) {\r\n  this.employeeId = employeeId;\r\n }\r\n public String getEmployeeName() {\r\n  return employeeName;\r\n }\r\n public void setEmployeeName(String employeeName) {\r\n  this.employeeName = employeeName;\r\n }\r\n public String getDepartment() {\r\n  return department;\r\n }\r\n public void setDepartment(String department) {\r\n  this.department = department;\r\n }\r\n public Address getAddress() {\r\n  return address;\r\n }\r\n public void setAddress(Address address) {\r\n  this.address = address;\r\n }\r\n\r\n private void writeObject(ObjectOutputStream os) throws IOException, ClassNotFoundException\r\n { \r\n  try {\r\n   os.defaultWriteObject();\r\n   os.writeInt(address.getHomeNo());\r\n   os.writeObject(address.getStreet());\r\n   os.writeObject(address.getCity());\r\n  } \r\n  catch (Exception e) \r\n  { e.printStackTrace(); }\r\n }\r\n\r\n private void readObject(ObjectInputStream is) throws IOException, ClassNotFoundException\r\n {\r\n  try {\r\n   is.defaultReadObject();\r\n   int homeNo=is.readInt();\r\n   String street=(String) is.readObject();\r\n   String city=(String) is.readObject();\r\n   address=new Address(homeNo,street,city);\r\n\r\n  } catch (Exception e) { e.printStackTrace(); }\r\n }\r\n}<\/pre>\n<p>One thing should be kept in mind that ObjectInputStream should read data in same sequence in which we have written data to ObjectOutputStream. Create Address.java in org.arpit.javapostsforlearning:<\/p>\n<h4>Address.java:<\/h4>\n<pre class=\" brush:java\">package org.arpit.javapostsforlearning;\r\nimport java.io.Serializable;\r\n\r\npublic class Address {\r\n\r\n int homeNo;\r\n String street;\r\n String city;\r\n\r\n public Address(int homeNo, String street, String city) {\r\n  super();\r\n  this.homeNo = homeNo;\r\n  this.street = street;\r\n  this.city = city;\r\n }\r\n public int getHomeNo() {\r\n  return homeNo;\r\n }\r\n public void setHomeNo(int homeNo) {\r\n  this.homeNo = homeNo;\r\n }\r\n public String getStreet() {\r\n  return street;\r\n }\r\n public void setStreet(String street) {\r\n  this.street = street;\r\n }\r\n public String getCity() {\r\n  return city;\r\n }\r\n public void setCity(String city) {\r\n  this.city = city;\r\n }\r\n}<\/pre>\n<p>Create SerializeDeserializeMain.java in org.arpit.javapostsforlearning:<\/p>\n<h4>SerializeDeserializeMain.java:<\/h4>\n<pre class=\" brush:java\">package org.arpit.javapostsforlearning;\r\nimport java.io.FileInputStream;\r\nimport java.io.FileOutputStream;\r\nimport java.io.IOException;\r\nimport java.io.ObjectInputStream;\r\nimport java.io.ObjectOutputStream;\r\n\r\npublic class SerializeDeserializeMain {\r\n \/**\r\n  * @author Arpit Mandliya\r\n  *\/\r\n public static void main(String[] args) {\r\n\r\n  Employee emp = new Employee();\r\n  emp.setEmployeeId(101);\r\n  emp.setEmployeeName('Arpit');\r\n  emp.setDepartment('CS');\r\n  Address address=new Address(88,'MG road','Pune');\r\n  emp.setAddress(address);\r\n  \/\/Serialize\r\n  try\r\n  {\r\n   FileOutputStream fileOut = new FileOutputStream('employee.ser');\r\n   ObjectOutputStream outStream = new ObjectOutputStream(fileOut);\r\n   outStream.writeObject(emp);\r\n   outStream.close();\r\n   fileOut.close();\r\n  }catch(IOException i)\r\n  {\r\n   i.printStackTrace();\r\n  }\r\n\r\n  \/\/Deserialize\r\n  emp = null;\r\n  try\r\n  {\r\n   FileInputStream fileIn =new FileInputStream('employee.ser');\r\n   ObjectInputStream in = new ObjectInputStream(fileIn);\r\n   emp = (Employee) in.readObject();\r\n   in.close();\r\n   fileIn.close();\r\n  }catch(IOException i)\r\n  {\r\n   i.printStackTrace();\r\n   return;\r\n  }catch(ClassNotFoundException c)\r\n  {\r\n   System.out.println('Employee class not found');\r\n   c.printStackTrace();\r\n   return;\r\n  }\r\n  System.out.println('Deserialized Employee...');\r\n  System.out.println('Emp id: ' + emp.getEmployeeId());\r\n  System.out.println('Name: ' + emp.getEmployeeName());\r\n  System.out.println('Department: ' + emp.getDepartment());\r\n  address=emp.getAddress();\r\n  System.out.println('City :'+address.getCity());\r\n }\r\n}<\/pre>\n<h4>Run it :<\/h4>\n<p>When you run SerializeDeserializeMain.java.You will get following output:<\/p>\n<pre class=\" brush:java\">Deserialized Employee...\r\nEmp id: 101\r\nName: Arpit\r\nDepartment: CS\r\nCity :Pune<\/pre>\n<p>so now we got same state of address object as it was before serialization.<\/p>\n<h4> Inheritance in Serialization:<\/h4>\n<p>Now we will see how inheritance affects serialization.So there can be muliple cases whether super class is serializable or not.If not then how will you handle that and how it works.Lets see by example. We will create Person.java which will be superclass of Employee:<\/p>\n<p style=\"text-align: center;\"><a href=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2013\/03\/PersonEmployeeSerialization.gif\"><img decoding=\"async\" class=\"aligncenter\" style=\"border: 0px none;\" alt=\"\" src=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2013\/03\/PersonEmployeeSerialization.gif\" width=\"142\" height=\"235\" border=\"0\" \/><\/a><\/p>\n<h2>Case 4: What if superclass is Serializable?<\/h2>\n<p>If superclass is serialzable then all its subclasses are automatically serializable.<\/p>\n<h2>Case 5:What if superclass is not Serializable?<\/h2>\n<p>If super class is not serializable then we have to handle it quite differently.<\/p>\n<ul>\n<li>If superclass is not serializable then it must have no argument constructor.<\/li>\n<\/ul>\n<p><b>Person.java<\/b><\/p>\n<pre class=\" brush:java\">package org.arpit.javapostsforlearning;\r\npublic class Person {\r\n\r\n String name='default';\r\n String nationality;\r\n\r\n public Person()\r\n {\r\n  System.out.println('Person:Constructor');\r\n }\r\n\r\n public Person(String name, String nationality) {\r\n  super();\r\n  this.name = name;\r\n  this.nationality = nationality;\r\n }\r\n\r\n public String getName() {\r\n  return name;\r\n }\r\n\r\n public void setName(String name) {\r\n  this.name = name;\r\n }\r\n\r\n public String getNationality() {\r\n  return nationality;\r\n }\r\n\r\n public void setNationality(String nationality) {\r\n  this.nationality = nationality;\r\n }\r\n\r\n}<\/pre>\n<p>Create Employee.java in org.arpit.javapostsforlearning:<\/p>\n<h4>Employee.java:<\/h4>\n<pre class=\" brush:java\">package org.arpit.javapostsforlearning;\r\nimport java.io.Serializable;\r\n\r\npublic class Employee extends Person implements Serializable{\r\n\r\n int employeeId;\r\n String department;\r\n\r\n public Employee(int employeeId,String name,String department,String nationality)\r\n {\r\n  super(name,nationality);\r\n  this.employeeId=employeeId;\r\n  this.department=department;\r\n  System.out.println('Employee:Constructor');\r\n }\r\n\r\n public int getEmployeeId() {\r\n  return employeeId;\r\n }\r\n public void setEmployeeId(int employeeId) {\r\n  this.employeeId = employeeId;\r\n }\r\n\r\n public String getDepartment() {\r\n  return department;\r\n }\r\n public void setDepartment(String department) {\r\n  this.department = department;\r\n }\r\n}<\/pre>\n<p>Create SerializeDeserializeMain.java in org.arpit.javapostsforlearning:<\/p>\n<h4>SerializeDeserializeMain.java:<\/h4>\n<pre class=\" brush:java\">package org.arpit.javapostsforlearning;\r\nimport java.io.FileInputStream;\r\nimport java.io.FileOutputStream;\r\nimport java.io.IOException;\r\nimport java.io.ObjectInputStream;\r\nimport java.io.ObjectOutputStream;\r\n\r\npublic class SerializeDeserializeMain {\r\n\r\n \/**\r\n  * @author Arpit Mandliya\r\n  *\/\r\n public static void main(String[] args) {\r\n\r\n  \/\/Serialize\r\n  Employee emp = new Employee(101,'Arpit','CS','Indian');\r\n  System.out.println('Before serializing');\r\n  System.out.println('Emp id: ' + emp.getEmployeeId());\r\n  System.out.println('Name: ' + emp.getName());\r\n  System.out.println('Department: ' + emp.getDepartment());\r\n  System.out.println('Nationality: ' + emp.getNationality());\r\n  System.out.println('************');\r\n  System.out.println('Serializing');\r\n  try\r\n  {\r\n   FileOutputStream fileOut = new FileOutputStream('employee.ser');\r\n   ObjectOutputStream outStream = new ObjectOutputStream(fileOut);\r\n   outStream.writeObject(emp);\r\n   outStream.close();\r\n   fileOut.close();\r\n  }catch(IOException i)\r\n  {\r\n   i.printStackTrace();\r\n  }\r\n\r\n  \/\/Deserialize\r\n  System.out.println('************');\r\n  System.out.println('Deserializing');\r\n  emp = null;\r\n  try\r\n  {\r\n   FileInputStream fileIn =new FileInputStream('employee.ser');\r\n   ObjectInputStream in = new ObjectInputStream(fileIn);\r\n   emp = (Employee) in.readObject();\r\n   in.close();\r\n   fileIn.close();\r\n  }catch(IOException i)\r\n  {\r\n   i.printStackTrace();\r\n   return;\r\n  }catch(ClassNotFoundException c)\r\n  {\r\n   System.out.println('Employee class not found');\r\n   c.printStackTrace();\r\n   return;\r\n  }\r\n  System.out.println('After serializing');\r\n  System.out.println('Emp id: ' + emp.getEmployeeId());\r\n  System.out.println('Name: ' + emp.getName());\r\n  System.out.println('Department: ' + emp.getDepartment());\r\n  System.out.println('Nationality: ' + emp.getNationality());\r\n }\r\n}<\/pre>\n<h4>Run it :<\/h4>\n<p>When you run SerializeDeserializeMain.java.You will get following output:<\/p>\n<p style=\"text-align: center;\"><a href=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2013\/03\/OutputSerializationInnheritance.gif\"><img decoding=\"async\" class=\"aligncenter\" style=\"border: 0px none;\" alt=\"\" src=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2013\/03\/OutputSerializationInnheritance.gif\" width=\"555\" height=\"343\" border=\"0\" \/><\/a><\/p>\n<p>If superclass is not Serializable then all values of the instance variables inherited from super class will be initialized by calling constructor of Non-Serializable Super class during deserialization process. So here name is inherited from person so during deserialization,name is initialized to default.<\/p>\n<h2>Case 6-What if superclass is Serializable but you don&#8217;t want subclass to be Serializable<\/h2>\n<p>If you don&#8217;t want subclass to serializable then you need to implement writeObject() and readObject() method and need to throw NotSerializableException from this methods.<\/p>\n<h2>Case 7-Can you Serialize static variables?<\/h2>\n<p>No,you can&#8217;t.As you know static variable are at class level not at object level and you serialize a object so you can&#8217;t serialize static variables.<\/p>\n<h2> Summary:<\/h2>\n<ul>\n<li>Serialization is the translation of your Java object&#8217;s values\/states to bytes to send it over network or save it.On other hand,Deserialization is conversion of byte code to corresponding java objects.<\/li>\n<li>Good thing about Serialization is entire process is JVM independent, meaning an object can be serialized on one platform and deserialized on an entirely different platform.\\<\/li>\n<li>If you want to serialize any class then it must implement Serializable interface which is marker interface.<\/li>\n<li>Marker interface in Java is interface with no field or methods or in simple word empty interface in java is called marker interface<\/li>\n<li>serialVersionUID is used to ensure that same object(That was used during Serialization) is loaded during Deserialization.serialVersionUID is used for version control of object.<\/li>\n<li>When you serialize any object and if it contain any other object reference then Java serialization serialize that object&#8217;s entire object graph.<\/li>\n<li>If you don&#8217;t want to serialize any field,then make it trasient.<\/li>\n<li>If superclass is Serializable then its subclasses are automatically Serializable.<\/li>\n<li>If superclass is not Serializable then all values of the instance variables inherited from super class will be initialized by calling constructor of Non-Serializable Super class during deserialization process.<\/li>\n<li>If you don&#8217;t want subclass to serializable then you need to implement writeObject() and readObject() method and need to throw NotSerializableException from this methods.<\/li>\n<li>You can&#8217;t serialize static variables.<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p><b><i>Reference: <\/i><\/b><a href=\"http:\/\/javapostsforlearning.blogspot.gr\/2013\/03\/serialization-in-java.html\">Serialization in java<\/a> from our <a href=\"http:\/\/www.javacodegeeks.com\/p\/jcg.html\">JCG partner<\/a> Arpit Mandliya at the <a href=\"http:\/\/javapostsforlearning.blogspot.gr\/\">Java frameworks and design patterns for beginners<\/a> blog.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Java provides mechanism called serialization to persists java objects in a form of ordered or sequence of bytes that includes the object&#8217;s data as well as information about the object&#8217;s type and the types of data stored in the object. So if we have serialize any object then it can be read and deserialize it &hellip;<\/p>\n","protected":false},"author":355,"featured_media":148,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[65],"class_list":["post-9638","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-core-java","tag-serialization"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Serialization in java<\/title>\n<meta name=\"description\" content=\"Java provides mechanism called serialization to persists java objects in a form of ordered or sequence of bytes that includes the object&#039;s data as well as\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.javacodegeeks.com\/2013\/03\/serialization-in-java.html\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Serialization in java\" \/>\n<meta property=\"og:description\" content=\"Java provides mechanism called serialization to persists java objects in a form of ordered or sequence of bytes that includes the object&#039;s data as well as\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.javacodegeeks.com\/2013\/03\/serialization-in-java.html\" \/>\n<meta property=\"og:site_name\" content=\"Java Code Geeks\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/javacodegeeks\" \/>\n<meta property=\"article:published_time\" content=\"2013-03-12T08:00:30+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/java-logo.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"150\" \/>\n\t<meta property=\"og:image:height\" content=\"150\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Arpit Mandliya\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@javacodegeeks\" \/>\n<meta name=\"twitter:site\" content=\"@javacodegeeks\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Arpit Mandliya\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"14 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2013\\\/03\\\/serialization-in-java.html#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2013\\\/03\\\/serialization-in-java.html\"},\"author\":{\"name\":\"Arpit Mandliya\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/person\\\/f75a08bfd66c98205aee4de978446e17\"},\"headline\":\"Serialization in java\",\"datePublished\":\"2013-03-12T08:00:30+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2013\\\/03\\\/serialization-in-java.html\"},\"wordCount\":1397,\"commentCount\":18,\"publisher\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2013\\\/03\\\/serialization-in-java.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/java-logo.jpg\",\"keywords\":[\"Serialization\"],\"articleSection\":[\"Core Java\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.javacodegeeks.com\\\/2013\\\/03\\\/serialization-in-java.html#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2013\\\/03\\\/serialization-in-java.html\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2013\\\/03\\\/serialization-in-java.html\",\"name\":\"Serialization in java\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2013\\\/03\\\/serialization-in-java.html#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2013\\\/03\\\/serialization-in-java.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/java-logo.jpg\",\"datePublished\":\"2013-03-12T08:00:30+00:00\",\"description\":\"Java provides mechanism called serialization to persists java objects in a form of ordered or sequence of bytes that includes the object's data as well as\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2013\\\/03\\\/serialization-in-java.html#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.javacodegeeks.com\\\/2013\\\/03\\\/serialization-in-java.html\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2013\\\/03\\\/serialization-in-java.html#primaryimage\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/java-logo.jpg\",\"contentUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/java-logo.jpg\",\"width\":150,\"height\":150},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2013\\\/03\\\/serialization-in-java.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Java\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/category\\\/java\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Core Java\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/category\\\/java\\\/core-java\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Serialization in java\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#website\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\",\"name\":\"Java Code Geeks\",\"description\":\"Java Developers Resource Center\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\"},\"alternateName\":\"JCG\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.javacodegeeks.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\",\"name\":\"Exelixis Media P.C.\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/exelixis-logo.png\",\"contentUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/exelixis-logo.png\",\"width\":864,\"height\":246,\"caption\":\"Exelixis Media P.C.\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/javacodegeeks\",\"https:\\\/\\\/x.com\\\/javacodegeeks\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/person\\\/f75a08bfd66c98205aee4de978446e17\",\"name\":\"Arpit Mandliya\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/9d372b59df7fe155d92edc19183d3beca7c34180846687eea4c1f21663001e29?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/9d372b59df7fe155d92edc19183d3beca7c34180846687eea4c1f21663001e29?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/9d372b59df7fe155d92edc19183d3beca7c34180846687eea4c1f21663001e29?s=96&d=mm&r=g\",\"caption\":\"Arpit Mandliya\"},\"description\":\"I am java developer at Tata Consultancy Services Ltd. My current area of interest are J2EE,web development and java design patterns. I am technology enthusiast trying to explore new technologies. In spare time,I love blogging.\",\"sameAs\":[\"http:\\\/\\\/javapostsforlearning.blogspot.in\\\/\"],\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/author\\\/arpit-mandliya\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Serialization in java","description":"Java provides mechanism called serialization to persists java objects in a form of ordered or sequence of bytes that includes the object's data as well as","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.javacodegeeks.com\/2013\/03\/serialization-in-java.html","og_locale":"en_US","og_type":"article","og_title":"Serialization in java","og_description":"Java provides mechanism called serialization to persists java objects in a form of ordered or sequence of bytes that includes the object's data as well as","og_url":"https:\/\/www.javacodegeeks.com\/2013\/03\/serialization-in-java.html","og_site_name":"Java Code Geeks","article_publisher":"https:\/\/www.facebook.com\/javacodegeeks","article_published_time":"2013-03-12T08:00:30+00:00","og_image":[{"width":150,"height":150,"url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/java-logo.jpg","type":"image\/jpeg"}],"author":"Arpit Mandliya","twitter_card":"summary_large_image","twitter_creator":"@javacodegeeks","twitter_site":"@javacodegeeks","twitter_misc":{"Written by":"Arpit Mandliya","Est. reading time":"14 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.javacodegeeks.com\/2013\/03\/serialization-in-java.html#article","isPartOf":{"@id":"https:\/\/www.javacodegeeks.com\/2013\/03\/serialization-in-java.html"},"author":{"name":"Arpit Mandliya","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/person\/f75a08bfd66c98205aee4de978446e17"},"headline":"Serialization in java","datePublished":"2013-03-12T08:00:30+00:00","mainEntityOfPage":{"@id":"https:\/\/www.javacodegeeks.com\/2013\/03\/serialization-in-java.html"},"wordCount":1397,"commentCount":18,"publisher":{"@id":"https:\/\/www.javacodegeeks.com\/#organization"},"image":{"@id":"https:\/\/www.javacodegeeks.com\/2013\/03\/serialization-in-java.html#primaryimage"},"thumbnailUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/java-logo.jpg","keywords":["Serialization"],"articleSection":["Core Java"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.javacodegeeks.com\/2013\/03\/serialization-in-java.html#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.javacodegeeks.com\/2013\/03\/serialization-in-java.html","url":"https:\/\/www.javacodegeeks.com\/2013\/03\/serialization-in-java.html","name":"Serialization in java","isPartOf":{"@id":"https:\/\/www.javacodegeeks.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.javacodegeeks.com\/2013\/03\/serialization-in-java.html#primaryimage"},"image":{"@id":"https:\/\/www.javacodegeeks.com\/2013\/03\/serialization-in-java.html#primaryimage"},"thumbnailUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/java-logo.jpg","datePublished":"2013-03-12T08:00:30+00:00","description":"Java provides mechanism called serialization to persists java objects in a form of ordered or sequence of bytes that includes the object's data as well as","breadcrumb":{"@id":"https:\/\/www.javacodegeeks.com\/2013\/03\/serialization-in-java.html#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.javacodegeeks.com\/2013\/03\/serialization-in-java.html"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.javacodegeeks.com\/2013\/03\/serialization-in-java.html#primaryimage","url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/java-logo.jpg","contentUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/java-logo.jpg","width":150,"height":150},{"@type":"BreadcrumbList","@id":"https:\/\/www.javacodegeeks.com\/2013\/03\/serialization-in-java.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.javacodegeeks.com\/"},{"@type":"ListItem","position":2,"name":"Java","item":"https:\/\/www.javacodegeeks.com\/category\/java"},{"@type":"ListItem","position":3,"name":"Core Java","item":"https:\/\/www.javacodegeeks.com\/category\/java\/core-java"},{"@type":"ListItem","position":4,"name":"Serialization in java"}]},{"@type":"WebSite","@id":"https:\/\/www.javacodegeeks.com\/#website","url":"https:\/\/www.javacodegeeks.com\/","name":"Java Code Geeks","description":"Java Developers Resource Center","publisher":{"@id":"https:\/\/www.javacodegeeks.com\/#organization"},"alternateName":"JCG","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.javacodegeeks.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.javacodegeeks.com\/#organization","name":"Exelixis Media P.C.","url":"https:\/\/www.javacodegeeks.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","contentUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","width":864,"height":246,"caption":"Exelixis Media P.C."},"image":{"@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/javacodegeeks","https:\/\/x.com\/javacodegeeks"]},{"@type":"Person","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/person\/f75a08bfd66c98205aee4de978446e17","name":"Arpit Mandliya","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/9d372b59df7fe155d92edc19183d3beca7c34180846687eea4c1f21663001e29?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/9d372b59df7fe155d92edc19183d3beca7c34180846687eea4c1f21663001e29?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/9d372b59df7fe155d92edc19183d3beca7c34180846687eea4c1f21663001e29?s=96&d=mm&r=g","caption":"Arpit Mandliya"},"description":"I am java developer at Tata Consultancy Services Ltd. My current area of interest are J2EE,web development and java design patterns. I am technology enthusiast trying to explore new technologies. In spare time,I love blogging.","sameAs":["http:\/\/javapostsforlearning.blogspot.in\/"],"url":"https:\/\/www.javacodegeeks.com\/author\/arpit-mandliya"}]}},"_links":{"self":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/9638","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/users\/355"}],"replies":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/comments?post=9638"}],"version-history":[{"count":0,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/9638\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/media\/148"}],"wp:attachment":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/media?parent=9638"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/categories?post=9638"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/tags?post=9638"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}