Swift 4 - Sử dụng Codable để làm việc với JSON
Như các bạn đã biết thì mới đây apple đã cho ra mắt IOS 11, đi kèm với nó là Swift 4. Apple đã thêm Codable và protocol Decoder Encoder vào trong phiên bản Swift 4 này để giúp chúng ta có thể đơn giản hoá khi làm việc với dữ liệu JSON. Để sử dụng Codable thì chúng ta cần phải: Khởi tạo Model ...
Như các bạn đã biết thì mới đây apple đã cho ra mắt IOS 11, đi kèm với nó là Swift 4. Apple đã thêm Codable và protocol Decoder Encoder vào trong phiên bản Swift 4 này để giúp chúng ta có thể đơn giản hoá khi làm việc với dữ liệu JSON. Để sử dụng Codable thì chúng ta cần phải:
- Khởi tạo Model implement protocol Codable.
- Các properties trong Model phải trùng khớp với các key value trong JSON data.
- Sử dụng JSONDecoder để parse JSON data thành Model.
Ví dụ:
Mình có một đoạn dữ liệu JSON như sau:
var json = """ { "information":{ "id": "c200", "name": "Ravi Tamada", "email": "ravi@gmail.com", "address": "xx-xx-xxxx,x - street, x - country", "gender": "male" }, "batch":{ "id": "1", "batch_name": "C1" } } """.data(using: .utf8)!
Tiếp theo, mình muốn lấy ra "name" và "batch_name". Để lấy được dữ liệu dựa vào Codable. Trước tiên, chúng ta cần phải xác định được kiểu dữ liệu và khai báo giống với key trong dữ liệu JSON. Ở đây mình sẽ khởi tạo các struct tương ứng với dữ liệu JSON ở trên:
struct Student: Codable { let information: Information let batch: Batch } struct Information: Codable { let name: String let email: String } struct Batch: Codable { let batch_name: String }
Giờ công việc tiếp theo là chúng ta sử dụng JSONDecoder để làm nốt phần còn lại:
do { let student = try JSONDecoder().decode(Student.self, from: json) } catch { print(error) }
Giờ chúng ta sẽ in dữ liệu ra:
print("Student name: (student.information.name) Class name: (student.batch.batch_name)")
Và đây là kết quả :
Kết:
Ở trên mình đã trình bày cách sử dụng Codable để làm việc với dữ liệu JSON một cách dễ hiểu nhất. Hãy thử và cảm nhận. Cảm ơn vì đã đọc bài viết.