Tôi nhận JSON từ API và phản hồi có thể là một trong 30 loại. Mỗi loại có một tập hợp các trường duy nhất, nhưng tất cả các câu trả lời đều có một trường type
cho biết loại đó là gì.JSON giải mã có điều kiện dựa trên một trường trong JSON
Cách tiếp cận của tôi là sử dụng serde. Tôi tạo một cấu trúc cho từng loại phản hồi và làm cho chúng có thể giải mã được. Một khi tôi đã làm điều đó làm thế nào để tôi chọn cấu trúc nào nên được sử dụng cho một tin nhắn mới nhận được?
Hiện tại, tôi đã tạo cấu trúc khác TypeStruct
chỉ với một trường duy nhất cho type
. Tôi giải mã JSON thành một TypeStruct
, sau đó chọn cấu trúc thích hợp cho thông điệp nhận được, dựa trên giá trị kiểu và giải mã thông điệp một lần nữa.
Tôi muốn loại bỏ bản sao giải mã này.
Giải pháp hiện tại của bạn là những gì tôi sẽ làm. Bạn nghĩ điều gì sẽ tốt hơn hoặc hiệu quả hơn trong việc tránh "sự sao chép mã hóa"? – Shepmaster
Tôi đang đến từ python, vì vậy tôi không cảm thấy thoải mái với các ngôn ngữ được đánh máy. Nhưng nếu bạn nói, cách tiếp cận của tôi là ok, tôi sẽ gắn bó với nó. – eyeinthebrick
Chỉ là ý kiến của tôi, nhưng điều này nghe có vẻ giống như một ví dụ tốt về sự lo lắng sớm về tối ưu hóa. Nhận mã của bạn để chạy và xem bạn có cho là đủ nhanh không. Nếu không, hãy cấu hình mã của bạn trước khi thay đổi nó - có lẽ giải mã JSON thậm chí không phải là vấn đề. – llogiq