Xử lý Dữ liệu JSON trên Android

Trong phát triển ứng dụng Android, việc xử lý dữ liệu từ máy chủ thường gặp định dạng JSON do tính nhẹ và dễ thao tác. So với XML, JSON được ưa chuộng nhờ cấu trúc đơn giản và hỗ trợ sẵn từ hệ sinh thái Android thông qua các lớp như JSONObject và JSONArray. Bài viết tập trung vào kỹ thuật chuyển đổi trực tiếp JSONObject thành đối tượng Java cụ thể, thay vì truy xuất từng trường dữ liệu.

Đầu tiên, định nghĩa lớp đối tượng mẫu với các thuộc tính cần thiết:

public class NguoiDung {
    private String ma;
    private String ten;
    private String queQuan;

    // Constructor không tham số (bắt buộc cho Gson)
    public NguoiDung() {}

    public String getMa() { return ma; }
    public void setMa(String ma) { this.ma = ma; }
    
    public String getTen() { return ten; }
    public void setTen(String ten) { this.ten = ten; }
    
    public String getQueQuan() { return queQuan; }
    public void setQueQuan(String queQuan) { this.queQuan = queQuan; }

    @Override
    public String toString() {
        return "NguoiDung{ma='" + ma + "', ten='" + ten + "', queQuan='" + queQuan + "'}";
    }
}

Thay vì tự viết phương thức phân tích, chúng ta sử dụng thư viện Gson - giải pháp phổ biến trong cộng đồng Android nhờ hiệu suất và tính linh hoạt. Tạo lớp tiện ích chuyển đổi như sau:

public class GsonChuyenDoi {
    private final Gson gson = new Gson();

    public <T> T chuyenTuJson(String duLieuJson, Class<T> kieuLop) {
        try {
            return gson.fromJson(duLieuJson, kieuLop);
        } catch (JsonSyntaxException e) {
            Log.e("GsonError", "Lỗi cú pháp JSON", e);
            return null;
        }
    }
}

Trong hoạt động chính, thực hiện tạo dữ liệu JSON và chuyển đổi thành đối tượng:

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.giao_dien_chinh);

        TextView hienThi = findViewById(R.id.txtHienThi);

        // Tạo đối tượng JSON từ dữ liệu
        JSONObject jsonObj = new JSONObject();
        jsonObj.put("ma", "1024");
        jsonObj.put("ten", "Minh");
        jsonObj.put("queQuan", "Hà Nội");
        
        // Chuyển đổi sang đối tượng NguoiDung
        NguoiDung nguoi = new GsonChuyenDoi().chuyenTuJson(
            jsonObj.toString(), 
            NguoiDung.class
        );

        // Hiển thị kết quả
        if (nguoi != null) {
            hienThi.setText(String.format(
                "Thông tin: %s\nMã: %s | Tên: %s | Quê quán: %s",
                jsonObj.toString(),
                nguoi.getMa(),
                nguoi.getTen(),
                nguoi.getQueQuan()
            ));
        } else {
            hienThi.setText("Chuyển đổi thất bại");
        }
    }
}

Phương pháp này giảm thiểu code thủ công, hạn chế lỗi khi thao tác với JSON thô. Thư viện Gson tự động ánh xạ trường JSON vào thuộc tính đối tượng dựa trên tên, đồng thời xử lý các trường hợp ngoại lệ giúp ứng dụng ổn định hơn.

Thẻ: Android gson JSONObject JSONParser

Đăng vào ngày 16 tháng 7 lúc 06:53