Android

Thao tác với JSON trong Android

Giới thiệu

Trong quá trình phát triển ứng dụng đôi khi chúng ta cần một cú pháp lưu trữ dữ liệu có cấu trúc bằng văn bản nào đó thuận tiện cho việc tao tác ghi và đọc. Hai ứng cử viên sáng giá đáp ứng nhu cầu cho việc này được thường xuyên nhắc đến đó là JSON  và XML. Trong bài này chúng ta sẽ cùng phần tích tại sao lại sử dụng JSON và cách sử dụng nó trong ứng dụng Android như thế nào.

JSON là gì

JSON là tên viết tắt của JavaScript Object Notation. Là một cú pháp để lưu trữ và chuyển đỗi dữ liệu và thuận tiện hơn XML.

Cấu trúc của JSON

Cấu trúc của JSON được bắt đầu bằng kí tự ‘{‘ và kết thúc bằng kí tự ‘}’.

Trong {} sẽ định nghĩa những object.

Ví dụ tôi muốn định nghĩa một object Person có name là “Nguyen Van A”, age là 20, address là Hồ Chí Minh thì chuỗi JSON được biểu diễn như sau:

Một ví dụ nữa biểu diễn danh sách các employees:

So sách với cấu trúc XML

Hay một chuỗi JSON phức tạp hơn mà chúng ta sẽ sử dụng để Parse trong bài viết này là:

Cấu trúc biểu diễn bằng XML

Chúng ta thấy rằng cùng biểu diễn một nội dung như nhau nhưng JSON gọn hơn XML. Và so sách về tốc độ Parse thì JSON nhanh hơn rất nhiều so với XML.

Thao tác với JSON trong Android

Trong Android các thư viện dùng để thao tác với JSON nằm trong package org.json.

Đọc Json trong Android

Sau đây chúng ta cùng phân tích chuổi Json để Parse nó thành các Object trong Java.

Chúng ta thấy có tất cả 4 Object đó là

  1. widget: có thuộc tính là debug giá trị on và 3 thuộc tính khác là 3 object window, image, text
  2. window: có các thuộc tính là title, name, width, height
  3. image: có các thuộc tính là src, name, hOffset, vOffset, alignment.
  4. text: có các thuộc tính là data, size, style, name,  hOffset, vOffset, alignment, onMouseUp.

Các bước parse như sau:

Bước 1: Chúng ta tạo đối tượng JSONObject với đối số truyền vào là chuổi JSON trên.

Bước 2: Lấy ra JSONObject widget.

Bước 3: Lấy ra tất các thuộc tính. Nếu là 1 Object thì phải tạo JSONObject và lấy thuộc tính bởi các phương thức.

  • int getInt(String name);
  • double getDouble(String name);
  • boolean getBoolean(String name);
  • String getString(String name);
  • long getLong(String name);
  • Object get(String name);

– Lấy thuộc tính debug của widget

– Lấy thuộc tính window của widget

– Lấy thuộc tính image của widget

– Lấy thuộc tính text của widget

Và dưới đây là soure đầy đủ của ví dụ trên

Tiếp theo chúng ta sẽ parse một chuổi JSON dưới đây:

Mã nguồn parse:

Các bạn để ý rằng chúng ta lấy về danh sách các Object thông qua phương thức getJSONArray(String name). Phương thức này trả về một JSONArray. Chúng ta sẽ qua từng phần tử trong danh sách và lấy ra các giá trị của các thuộc tính.

Ghi Json trong Android

Trước tiên tôi tạo một class City như sau:

Class LatLng mô tả latitude và longtitute của City

Tôi override lại phương thức toString của class City để chuyển thành chuổi Json như sau:

Và ta được kết quả

Các bạn thấy rằng việc đọc hay ghi JSON bằng thư viện có sẵn trong Android khá là dài dòng, những các bạn hãy tập làm quen với nó. Vì chúng ta sẽ hiểu được cơ chế của nó như thế nào. Bài tiếp theo tôi sẽ giới thiệu cho các bạn một thư viện hổ trợ trong việc thao tác với JSON mạnh mẽ hơn đó là GSON

Các bạn có thể download source code đầy đủ tại đây

Lời kết

Trên đây tôi đã cùng các bạn tìm hiểu về JSON cũng như việc thao tác với JSON trong Android. Mong rằng qua bài viết này có thể giúp ích cho các bạn trong quá trình học tập cũng như làm việc. Nếu có bất cứ thắc mắc nào các bạn có thể để lại comment bên dưới. Tôi sẽ nhiệt tình trả lời và giúp đỡ các bạn.

 

6 thoughts on “Thao tác với JSON trong Android”

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.