تحويل JSON إلى Java class (POJO)

تكتب الأداة صنفا رئيسيا وأصنافا static داخلية للكائنات المتداخلة، جاهزة للقراءة عبر ObjectMapper في Jackson.

جارٍ تحميل الأداة…

المعالجة والخصوصية: تُحسب النتيجة داخل متصفحك ولا تُرسل بياناتك إلى أي خادم.

طريقة الاستخدام

  1. أدخل نص JSON، اسم النوع الرئيسي وإضافة getters وsetters.
  2. تظهر النتيجة فورًا وتتحدّث مع كل تعديل.
  3. انسخ النتيجة، أو انسخ رابطًا يحفظ القيم نفسها لمشاركتها.

طريقة الحساب

String وint أو long حسب حجم العدد وdouble وboolean وList<T> وObject، وصنف static داخلي لكل كائن متداخل. الحقل الذي قد يكون null أو غائبا يستخدم النوع المغلف مثل Integer وDouble، ولكل حقل @JsonProperty بالمفتاح الأصلي.

مثال

المدخلات: اسم النوع الرئيسي = Root، إضافة getters وsetters = نعم. النتيجة: الكود الناتج: import com.fasterxml.jackson.annotation.JsonProperty; import java.util.List; public class Root { @JsonProperty("id") private int id; @JsonProperty("name") private String name; @JsonProperty("email") private String email; @JsonProperty("is_active") private boolean isActive; @JsonProperty("balance") private double balance; @JsonProperty("tags") private List<String> tags; @JsonProperty("address") private Address address; @JsonProperty("orders") private List<Order> orders; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public boolean getIsActive() { return isActive; } public void setIsActive(boolean isActive) { this.isActive = isActive; } public double getBalance() { return balance; } public void setBalance(double balance) { this.balance = balance; } public List<String> getTags() { return tags; } public void setTags(List<String> tags) { this.tags = tags; } public Address getAddress() { return address; } public void setAddress(Address address) { this.address = address; } public List<Order> getOrders() { return orders; } public void setOrders(List<Order> orders) { this.orders = orders; } public static class Address { @JsonProperty("city") private String city; @JsonProperty("postal_code") private String postalCode; public String getCity() { return city; } public void setCity(String city) { this.city = city; } public String getPostalCode() { return postalCode; } public void setPostalCode(String postalCode) { this.postalCode = postalCode; } } public static class Order { @JsonProperty("order_id") private String orderId; @JsonProperty("total") private double total; @JsonProperty("coupon") private String coupon; public String getOrderId() { return orderId; } public void setOrderId(String orderId) { this.orderId = orderId; } public double getTotal() { return total; } public void setTotal(double total) { this.total = total; } public String getCoupon() { return coupon; } public void setCoupon(String coupon) { this.coupon = coupon; } } }، عدد الأنواع: 3، عدد الحقول: 13.

{
  "id": 1024,
  "name": "Sara Ahmed",
  "email": "sara@example.com",
  "is_active": true,
  "balance": 1520.75,
  "tags": ["vip", "riyadh"],
  "address": { "city": "Riyadh", "postal_code": "12211" },
  "orders": [
    { "order_id": "A-1", "total": 99.5, "coupon": "EID10" },
    { "order_id": "A-2", "total": 120, "coupon": null }
  ]
}
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.List;

public class Root {
    @JsonProperty("id")
    private int id;

    @JsonProperty("name")
    private String name;

    @JsonProperty("email")
    private String email;

    @JsonProperty("is_active")
    private boolean isActive;

    @JsonProperty("balance")
    private double balance;

    @JsonProperty("tags")
    private List<String> tags;

    @JsonProperty("address")
    private Address address;

    @JsonProperty("orders")
    private List<Order> orders;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public boolean getIsActive() {
        return isActive;
    }

    public void setIsActive(boolean isActive) {
        this.isActive = isActive;
    }

    public double getBalance() {
        return balance;
    }

    public void setBalance(double balance) {
        this.balance = balance;
    }

    public List<String> getTags() {
        return tags;
    }

    public void setTags(List<String> tags) {
        this.tags = tags;
    }

    public Address getAddress() {
        return address;
    }

    public void setAddress(Address address) {
        this.address = address;
    }

    public List<Order> getOrders() {
        return orders;
    }

    public void setOrders(List<Order> orders) {
        this.orders = orders;
    }

    public static class Address {
        @JsonProperty("city")
        private String city;

        @JsonProperty("postal_code")
        private String postalCode;

        public String getCity() {
            return city;
        }

        public void setCity(String city) {
            this.city = city;
        }

        public String getPostalCode() {
            return postalCode;
        }

        public void setPostalCode(String postalCode) {
            this.postalCode = postalCode;
        }
    }

    public static class Order {
        @JsonProperty("order_id")
        private String orderId;

        @JsonProperty("total")
        private double total;

        @JsonProperty("coupon")
        private String coupon;

        public String getOrderId() {
            return orderId;
        }

        public void setOrderId(String orderId) {
            this.orderId = orderId;
        }

        public double getTotal() {
            return total;
        }

        public void setTotal(double total) {
            this.total = total;
        }

        public String getCoupon() {
            return coupon;
        }

        public void setCoupon(String coupon) {
            this.coupon = coupon;
        }
    }
}

الحدود والملاحظات

  • يحتاج مكتبة Jackson (jackson-annotations) في المشروع.
  • العدد الأكبر من 2147483647 في العينة يجعل الحقل long، وإلا يبقى int.

أسئلة شائعة عن هذه الأداة

لماذا استخدم Integer بدل int في بعض الحقول؟

النوع البدائي int لا يقبل null، لذلك يستخدم Integer للحقل الذي ظهر null أو غاب في بعض العناصر.

هل أحتاج getters وsetters؟

Jackson يقرأ الحقول الخاصة عبرها، وإذا ألغيتها تصبح الحقول public ويبقى الكود صالحا.

هل ترسل بياناتي إلى خادم؟

لا، التحويل يعمل داخل متصفحك ولا يغادر نص JSON جهازك.