Home > Java > javaTutorial > What is the importance of @JsonIdentityInfo annotation using Jackson in Java?

What is the importance of @JsonIdentityInfo annotation using Jackson in Java?

WBOY
Release: 2023-09-23 09:37:02
forward
1347 people have browsed it

What is the importance of @JsonIdentityInfo annotation using Jackson in Java?

The @JsonIdentityInfo annotation is used when an object has a parent-child relationship in the Jackson library. @JsonIdentityInfo Annotations Used to indicate object identity during serialization and deserialization. ObjectIdGenerators.PropertyGenerator is an abstract placeholder class used to represent the case where the object identifier to be used comes from a POJO property.

Syntax

@Target(value={ANNOTATION_TYPE,TYPE,FIELD,METHOD,PARAMETER})
@Retention(value=RUNTIME)
public @interface JsonIdentityInfo
Copy after login

Example

import java.util.*;
import java.io.*;
import com.fasterxml.jackson.annotation.JsonIdentityInfo;
import com.fasterxml.jackson.annotation.ObjectIdGenerators;
import com.fasterxml.jackson.databind.ObjectMapper;
public class JsonIdentityInfoTest {
   public static void main(String[] args) throws IOException {
      ObjectMapper mapper = new ObjectMapper();
      User user = new User(115, "Raja", "Ramesh");
      Address address = new Address(125, "Madhapur", "Hyderabad", user);
      user.addAddress(address);
      String jsonString = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(address);
      System.out.println(jsonString);
   }
}
// User class
@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "userId")
class User {
   private int userId;
   private String firstName;
   private String lastName;
   private List<Address> addresses;
   public User(int userId, String firstName, String lastName) {
      this.userId = userId;
      this.firstName = firstName;
      this.lastName = lastName;
      this.addresses = new ArrayList<Address>();
   }
   public int getUserId() {
      return userId;
   }
   public String getFirstName() {
      return firstName;
   }
   public String getLastName() {
      return lastName;
   }
   public void addAddress(Address address) {
      addresses.add(address);
   }
}
// Address class
@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "userId")<strong>
</strong>class Address {
   private int userId;
   private String city;
   private String street;
   private User user;
   public Address(int userId, String street, String city, User user) {
      this.userId = userId;
      this.street = street;
      this.city = city;
      this.user = user;
   }
   public int getUserId() {
      return userId;
   }
   public String getStreet() {
      return street;
   }
   public String getCity() {
      return city;
   }
   public User getUser() {
      return user;
   }
}
Copy after login

Output

{
 "userId" : 125,
 "city" : "Hyderabad",
 "street" : "Madhapur",
 "user" : {
    "userId" : 115,
    "firstName" : "Raja",
    "lastName" : "Ramesh"
    }
}
Copy after login

The above is the detailed content of What is the importance of @JsonIdentityInfo annotation using Jackson in Java?. For more information, please follow other related articles on the PHP Chinese website!

source:tutorialspoint.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template