Preventing an property from being serialized to json

By default when an object is serialized to json format, all the properties in the object are serialized.

We cannot prevent this default behavior, by annotating the property with @JsonbTransient annotation.

Below is the example. The class to be serialized is Employee

Employee


1  import javax.json.bind.annotation.JsonbTransient;
2  
3  public class Employee {
4   private int id;
5   private String name;
6   private int ssn;
7  
8   public int getId() {
9       return id;
10  }
11 
12  public void setId(int id) {
13      this.id = id;
14  }
15 
16  public String getName() {
17      return name;
18  }
19 
20  public void setName(String name) {
21      this.name = name;
22  }
23 
24  @JsonbTransient
25  public int getSsn() {
26      return ssn;
27  }
28 
29  public void setSsn(int ssn) {
30      this.ssn = ssn;
31  }
32 }

When the object of an employee class is serialized. I want all properties except ssn to serialized. To do this I mark getSsn method with the annotation. Refer to line 24 in the above code.

The main code is as shown below

Main Code


import javax.json.bind.Jsonb;
import javax.json.bind.JsonbBuilder;

public class JsonbDemo6 {
    public static void main(String[] args) {
        Employee emp = new Employee();
        emp.setId(1);
        emp.setName("name1");
        emp.setSsn(9);
        
        Jsonb jsonb = JsonbBuilder.create();
        String result = jsonb.toJson(emp);
        System.out.println(result);
    }
}

Output

{“id”:1,”name”:”name1″}

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s