Xử lý JSON trong Android- Cách làm không thể dễ hơn – VNTALKING

Bài viết này sẽ hướng dẫn những bạn cách Parse Json Android một cách thuận tiện nhất, ngắn gọn và hiệu suất cao .

Xử lý JSON Android và đôi lời trình làng

JSON là một chuẩn định dạng tài liệu rất thông dụng thời nay. Việc trao đổi tài liệu giữa Server và Client người ta thường ưu thích sử dụng JSON .
Bạn hoàn toàn có thể khám phá thêm về JSON tại đây : JSON là gì ?

Các ứng dụng có mô hình Client Server như ứng dụng đọc báo, ứng dụng chat, ứng dụng mạng xã hội… thì thường client sẽ request lên server và sau đó server sẽ trả dữ liệu cho client dưới dạng JSON. Nhiệm vụ của Client lúc này là parse JSON để hiển thị ra màn hình.

Xử lý JSON trong Android

Không biết những bạn thế nào, chứ ngày trước mình rất ngại Parse Json Android. Vì thấy nó cứ phức tạp thế nào ấy .
Cách làm mà những bạn hay được hướng dẫn sẽ là tạo ra 1 JSONOject hoặc JSONArray sau khi đọc json vào inputstream. Nhưng sau đó việc giải quyết và xử lý lại trở nên khó khăn vất vả vì tất cả chúng ta phải thực thi bằng tay thủ công mọi đối tượng người tiêu dùng trong mỗi mảng. Điều này hoàn toàn có thể gây ra rất nhiều lỗi .
Cho đến một ngày mình biết đến thư viện GSON, và thử dùng nó, mình đã phải thốt lên rằng : Thần tiên đây rồi !
Đây là một thư viện nguồn mở của Google để serialise / deserialise Java object sang JSON và ngược lại .
Có thể những bạn không tin vào sức mạnh của thư viện gson. Mình sẽ chứng mình bằng cách triển khai parse một file json theo 2 cách :

  • Sử dụng API của Android như cách truyền thống (À đừng quên đọc thêm sử dụng API với Kotlin nhé).
  • Sử dụng thư viện gson.

Nào cùng code và so sánh nhé !

Cách 1 : Parse JSON sử dụng API thuần của Android

Đầu tiên, tất cả chúng ta tìm hiểu thêm một file json mà mình tạo sẵn. Nhiệm vụ của tất cả chúng ta là sẽ đọc file này và parse nó rồi hiển thị ra màn hình hiển thị .
Như bạn hoàn toàn có thể thấy, ở đây có một đối tượng người tiêu dùng chứa một mảng những đối tượng người dùng sự kiện. Vì vậy, điều tiên phong tất cả chúng ta sẽ làm là đọc file json kia và trả về String json bằng cách mở một inputstream nguồn vào, sau đó đẩy nó vào buffer. Tiếp theo, tất cả chúng ta quy đổi mảng buffer thành một đối tượng người tiêu dùng String .

💖 Có thể bạn cần: Sử dụng Volley library Android để thao tác với Network API

String json = null;
try {
    InputStream inputStream = getAssets().open("events.json");
    int size = inputStream.available();
    byte[] buffer = new byte[size];
    inputStream.read(buffer);
    inputStream.close();
    json = new String(buffer, "UTF-8");

} catch (IOException e) {
    e.printStackTrace();
}

Bây giờ tất cả chúng ta có một String Json và hoàn toàn có thể nghiên cứu và phân tích nó bằng cách phối hợp JSONObject và JSONArray. Trước tiên, tất cả chúng ta sẽ truy vấn tài liệu trong đối tượng người tiêu dùng json bên ngoài cùng, ở đây là “ events ”. Chúng ta làm như sau :

JSONObject jsonObject = new JSONObject(json);
JSONArray events = jsonObject.getJSONArray("events");

Bây giờ tất cả chúng ta có một mảng, tất cả chúng ta hoàn toàn có thể duyệt qua nó để lấy những đối tượng người tiêu dùng bên trong mảng events .

for (int j=0; j < events.length(); j++){
    JSONObject cit = events.getJSONObject(j);
    String color = jsonObject.getString("color");
    String email = jsonObject.getString("email"); 
    String endTime = jsonObject.getString("end_time");
    String id = jsonObject.getString("id");
    String latitude = jsonObject.getString("latitude");
    String locationName = jsonObject.getString("location_name");
    String logo = jsonObject.getString("logo");
    String longitude = jsonObject.getString("longitude");
    String name = jsonObject.getString("name");
    String slogan = jsonObject.getString("slogan");
    String startTime = jsonObject.getString("start_time");
    String url = jsonObject.getString("url");
}

Như vậy là xong việc parse JSON theo cách truyền thống lịch sử, cũng mất tương đối step đúng không .
Tiếp theo, tất cả chúng ta thử parse theo cách mới nhé, dùng thư viện gson

🔥 Đừng bỏ qua: Để trở thành lập trình quốc tế cần bao nhiêu thời gian

Cách 2 : Parse Json Android sử dụng thư viện gson

Chúng ta vẫn sử dụng file json ở trên nhé. Để sử dụng thư viện gson, tất cả chúng ta thêm khai báo trong grade file :

compile 'com.google.code.gson: gson: 2.7'

Việc quan trọng nhất của việc parse JSON bằng gson là tất cả chúng ta phải định nghĩa một object có những thuộc tính tương đương với Object json kia. Nhìn vào file json và sau đó tất cả chúng ta định nghĩa một class như sau :

public class Event {

    int id;
    String name;
    String email;
    String color;
    String logo;
    @SerializedName("start_time")
    String start;
    @SerializedName("end_time")
    String end;
    float latitude;
    float longitude;
    @SerializedName("location_name")
    String locationName;
    String url;
    String slogan;

    public Event(int id, String name, String email, String color, String logo, String start,
                 String end, float latitude, float longitude, String locationName, String url, String slogan) {
        this.id = id;
        this.name = name;
        this.email = email;
        this.color = color;
        this.logo = logo;
        this.start = start;
        this.end = end;
        this.latitude = latitude;
        this.longitude = longitude;
        this.locationName = locationName;
        this.url = url;
        this.slogan = slogan;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    public String getColor() {
        return color;
    }
    public void setColor(String color) {
        this.color = color;
    }
    public String getUrl() {
        return url;
    }
    public void setUrl(String url) {
        this.url = url;
    }
    public String getSlogan() {
        return slogan;
    }
    public void setSlogan(String slogan) {
        this.slogan = slogan;
    }
    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 getLogo() {
        return logo;
    }
    public void setLogo(String logo) {
        this.logo = logo;
    }
    public String getStart() {
        return start;
    }
    public void setStart(String start) {
        this.start = start;
    }
    public String getEnd() {
        return end;
    }
    public void setEnd(String end) {
        this.end = end;
    }
    public float getLatitude() {
        return latitude;
    }
    public void setLatitude(float latitude) {
        this.latitude = latitude;
    }
    public float getLongitude() {
        return longitude;
    }
    public void setLongitude(float longitude) {
        this.longitude = longitude;
    }
    public String getLocationName() {
        return locationName;
    }
    public void setLocationName(String locationName) {
        this.locationName = locationName;
    }

}

Ở đây chúng ta đặt tên cho các tham số giống như trong json. Hoặc có thể thêm @SerializedName (entity_name). Sau đó, chúng ta gọi API của thư viện gson để thực sự truy xuất dữ liệu từ tệp json.

public class EventResponseList {
    @SerializedName("events")
    public List event;
}

Sau đó:

EventResponseList eventResponseList = gson.fromJson(json, EventResponseList.class);

Chỉ với 3 dòng lênh trên, tất cả chúng ta đã có một mảng những object được parse từ file json. Kết quả giống như cách 1 mà chúng đã làm. Từ mảng này, tất cả chúng ta hoàn toàn có thể gọi và lấy giá trị của bất kỳ thuộc tính nào của file json kia. Quá thuận tiện phải không ! ?
Qua bài viết này, mình hy vọng phân phối cho những bạn một phương pháp mới để giải quyết và xử lý JSON trong Android hiệu suất cao và nhanh gọn. Các bạn vướng mắc chỗ nào thì comment bên dưới nhé, đừng quên like và san sẻ nữa đấy .