Parse Json chỉ với 1 dòng trong Swift 5.2

Parse Json chỉ với 1 dòng trong Swift 5.2

Khi làm việc với API chúng ta thường xuyên phải parse data JSON sang model để sử dụng. Ta sẽ parse từng key đưa vào các biến của model, hoặc dùng thư hiện để làm điều này như ASON, ObjectMapper… Nhưng trong Swift đã có sẵn đồ chơi cho chúng ta dùng đó là : Decodable.

Ví dụ ta có 1 chuỗi json được trả về như sau, với 2 class Customer và Car. Với Customer sẽ chứa các Car:

{\"id\":27,\"name\":\"Phong\",\"buyCar\":[{\"name\":\"VinFast LUX A2.0\",\"id\":1},{\"name\":\"Toyota Camry\",\"id\":2}]}

Đầu tiên là tạo Model là 2 struct Customer và Car. Để parse tự động thì chúng ta conform từ protocol Decodable:

Tiếp theo chúng ta dùng JSONDecoder để parse:

Xong vậy là chúng đã parse JSON sang Object mà không cần phải dùng thư viện bên thứ 3 😀.

Trường hợp trên parse json khi các tên biến trong struct chúng ta khai báo trùng với tên key json trả về, vậy khi chúng ta cần tên biến trong struct khác với json trả về thì làm sao. Chúng ta sẽ khai báo 1 enum CodingKey:

Ở trên là cách parse tự động, ngoài ra chúng ta cũng có thể parse manual, chúng ta sẽ implement hàm init(from decoder: Decoder):

Cám ơn các bạn đã theo dõi bài viết :D.