Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

วิธีแปลง Java Object เป็น JSON ด้วยไลบรารี GSON

JSON (JavaScript Object Notation) เป็นมาตรฐานเปิดแบบข้อความเบาเวท ที่ออกแบบมาสำหรับการแลกเปลี่ยนข้อมูลที่มนุษย์อ่านง่าย รูปแบบของ JSON นิยมใช้กันอย่างแพร่หลายในภาษาโปรแกรมมิ่ง เช่น C, C++, Java, Python, Perl เป็นต้น

มีไลบรารี Java หลายตัวที่จัดการ JSON ได้ Google Gson เป็นไลบรารี Java ที่เรียบง่าย ใช้สำหรับ Serialize Java Object เป็น JSON และทำย้อนกลับ (Deserialize) ได้ พัฒนาโดย Google แบบ Open Source

การแปลง Java Object เป็น JSON

ไลบรารี Gson ของ Google มีคลาสหลักชื่อ Gson ซึ่งมีเมธอด toJson() หลายรูปแบบ รวมถึงรูปแบบที่รับ Java Object แล้วแปลงเป็น JSON String คืนค่ากลับมา

ขั้นตอนการแปลง Java Object เป็น JSON String ด้วย GSON:

  1. เพิ่ม Maven Dependency ใน pom.xml:
<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.8.5</version>
</dependency>
  1. สร้าง POJO/JavaBean พร้อมตัวแปร private และ getter/setter
  2. สร้างคลาสหลัก (ต้องเข้าถึง POJO ได้)
  3. สร้างอ็อบเจกต์ POJO ตั้งค่าผ่าน setter
  4. สร้างอ็อบเจกต์ Gson
  5. เรียก toJson() ส่งอ็อบเจกต์ POJO เข้าไป
  6. รับ JSON String ที่ได้มาแสดงผล

ตัวอย่างโค้ด

import com.google.gson.Gson;

class Student {
    private int id;
    private String name;
    private int age;
    private long phone;

    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 int getAge() { return age; }
    public void setAge(int age) { this.age = age; }
    public long getPhone() { return phone; }
    public void setPhone(long phone) { this.phone = phone; }
}

public class ObjectToJson {
    public static void main(String[] args) {
        Student std = new Student();
        std.setId(1);
        std.setName("Krishna");
        std.setAge(30);
        std.setPhone(9848022338L);

        Gson gson = new Gson();
        String jsonString = gson.toJson(std);
        System.out.println(jsonString);
    }
}

ผลลัพธ์

{"id":1,"name":"Krishna","age":30,"phone":9848022338}