@JsonPropertyOrder একটি অ্যানোটেশন যা ক্লাস-লেভেল-এ ব্যবহার করা হয়। এটি ফিল্ডের একটি লিস্ট নেয় প্রপার্টি হিসেবে যা ডিফাইন করে যে কোনো অর্ডারে ফিল্ডগুলো অবজেক্ট JSON সিরিয়ালাইজেশন থেকে ফলাফলস্বরূপ স্ট্রিং-এ দেখাবে। অ্যানোটেশন ডিক্লেরেশনে অন্তর্ভুক্ত প্রপার্টিগুলো প্রথমে (ডিফাইন করা অর্ডারে) সিরিয়ালাইজ হয়, তারপর ডেফিনিশনে অন্তর্ভুক্ত নয় এমন প্রপার্টিগুলো।
সিনট্যাক্স
public @interface JsonPropertyOrder
উদাহরণ
import com.fasterxml.jackson.core.*;
import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import java.util.*;
import java.io.*;
public class JsonPropertyOrderTest {
public static void main(String args[]) throws JsonGenerationException, JsonMappingException, IOException {
Employee emp = new Employee();
emp.setFirstName("Adithya");
emp.setEmpId(25);
emp.setLastName("Jai");
emp.getTechnologies().add("Java");
emp.getTechnologies().add("Scala");
emp.getTechnologies().add("Python");
ObjectMapper mapper = new ObjectMapper();
mapper.writerWithDefaultPrettyPrinter().writeValue(System.out, emp);
}
}
// Employee ক্লাস
@JsonPropertyOrder({
"firstName",
"lastName",
"technologies",
"empId"
})
class Employee {
private int empId;
private String firstName;
private String lastName;
private List<String> technologies = new ArrayList<>();
public int getEmpId() { return empId; }
public void setEmpId(int empId) { this.empId = empId; }
public String getFirstName() { return firstName; }
public void setFirstName(String firstName) { this.firstName = firstName; }
public String getLastName() { return lastName; }
public void setLastName(String lastName) { this.lastName = lastName; }
public List<String> getTechnologies() { return technologies; }
public void setTechnologies(List<String> technologies) { this.technologies = technologies; }
}
আউটপুট
{
"firstName" : "Adithya",
"lastName" : "Jai",
"technologies" : [ "Java", "Scala", "Python" ],
"empId" : 125
}
ব্যাখ্যা: @JsonPropertyOrder এনোটেশন ক্লাসে দিয়ে ফিল্ডের অর্ডার নির্দিষ্ট করা হয়েছে: firstName, lastName, technologies, empId। JSON আউটপুটে একই অর্ডার মেনটেইন করা হয়েছে। অ্যালফাবেটিক্যাল অর্ডার বাদে কাস্টম অর্ডার পাওয়া যায়।