JSON sang Swift là quá trình tự động chuyển đổi dữ liệu định dạng JSON (đối tượng hoặc mảng) thành khai báo kiểu Swift struct / class. JSON là tiêu chuẩn thực tế của REST API, tệp cấu hình, nhật ký theo dõi, còn Swift là ngôn ngữ phát triển chính của ứng dụng iOS, macOS, watchOS, tvOS, cũng là ngôn ngữ cốt lõi của framework phía máy chủ như Vapor. Trong phát triển thường cần viết JSON trả về từ API thành kiểu Swift tương ứng, viết tay không chỉ tốn thời gian mà còn dễ bỏ sót trường tùy chọn, tác dụng của công cụ này là tự động hóa quá trình này.
Công cụ này sử dụng quicktype-core để hoàn thành chuyển đổi cục bộ trên trình duyệt. quicktype là công cụ tạo cấu trúc đa ngôn ngữ, công cụ này bật tùy chọn just-types và no-comments cho Swift, do đó đầu ra là khai báo thuộc tính struct / class sạch sẽ, không chứa chú thích tuần tự hóa Codable, Decodable, Encodable, cũng không chứa câu lệnh import hoặc chú thích đầu tệp. Kiểu「trần」này thuận tiện cho nhà phát triển tự do thêm giao thức, điều chỉnh kiểm soát truy cập theo nhu cầu dự án, hoặc đổi thành quy ước đặt tên ưa thích của framework mạng như Alamofire / Moya.
Hệ thống kiểu của Swift nổi tiếng về an toàn. struct là kiểu giá trị, phù hợp để biểu diễn mô hình dữ liệu bất biến; class là kiểu tham chiếu, phù hợp cho các tình huống cần chia sẻ trạng thái hoặc kế thừa. Các thuộc tính tạo ra bởi công cụ này sẽ ánh xạ尽可能 đến String, Int, Double, Bool, [T], kiểu tùy chỉnh của Swift, v.v. Nhà phát triển có thể sau khi tạo đổi một số trường thành Optional (?) theo nhu cầu nghiệp vụ, thêm giao thức Codable cho kiểu, hoặc nâng cấp toàn bộ struct thành class để có ngữ nghĩa tham chiếu.
Xử lý đối tượng lồng nhau là khả năng quan trọng của công cụ. Khi JSON chứa đối tượng lồng nhau, công cụ sẽ đệ quy tạo kiểu con độc lập, ví dụ khi Root chứa đối tượng address sẽ tạo kiểu Address, trong kiểu chính tham chiếu qua var address: Address. Điều này tránh định nghĩa lặp lại kiểu, cũng cho phép tự động hoàn thành và kiểm tra kiểu của Xcode theo dõi chính xác quan hệ phân cấp. Quy tắc đặt tên sử dụng viết hoa chữ cái đầu của tên trường, ví dụ phần tử trong mảng users sẽ được đặt tên là User.
Suy luận kiểu mảng tuân theo chiến lược「suy luận theo phần tử đầu tiên」. Nếu phần tử mảng là chuỗi thì tạo [String], là số nguyên thì tạo [Int], là số thực thì tạo [Double], là đối tượng thì tạo [kiểu tùy chỉnh]. Mảng rỗng [] do thiếu mẫu, sẽ tạo [Any] hoặc kiểu dự phòng, sau khi tạo khuyến nghị đổi thành kiểu cụ thể theo nghiệp vụ thực tế. Đối với mảng đặc biệt lớn hoặc mảng thưa, khuyến nghị đặt phần tử mẫu thực vào JSON gốc, nâng cao độ chính xác suy luận.
Xử lý thuần frontend là ưu thế kiến trúc cốt lõi của công cụ này. Tất cả phân tích JSON và tạo code Swift đều thực thi trong JavaScript trình duyệt (bao gồm quicktype-core trong Web Worker), không phụ thuộc dịch vụ backend, cũng không gửi dữ liệu đến bất kỳ máy chủ nào. Thiết kế này vừa bảo vệ dữ liệu JSON có thể chứa thông tin nhạy cảm, vừa đảm bảo tốc độ chuyển đổi chỉ bị giới hạn bởi hiệu suất thiết bị cục bộ, không cần chờ đợi mạng đi lại. Đặc biệt quan trọng khi xử lý JSON chứa khóa API, trường nghiệp vụ chưa công khai.
Công cụ này khác với một số công cụ trực tuyến gắn chặt chiến lược giải mã Codable / CodingKeys / Date: các thành viên nhóm phát triển thường có sở thích khác nhau về giao thức, đặt tên, kiểm soát truy cập, công cụ này kiên trì nguyên tắc đầu ra tối thiểu, để lại lựa chọn giao thức và chiến lược cho nhà phát triển tùy chỉnh theo dự án. Quy trình làm việc「tạo bán thành phẩm + tùy chỉnh cấp dự án」này, trong các nhóm vừa và lớn thường được kỹ sư đón nhận hơn「một cú nhấp chuột toàn bộ」.