Tôi có một cấu trúc mà tôi muốn Soạn thành JSON khác nhau tùy thuộc vào ngữ cảnh.JSON marshalling/unmarshalling cùng một cấu trúc để định dạng JSON khác nhau trong đi?
Ví dụ, đôi khi tôi muốn sắp xếp như thế này:
type MyStruct struct {
Nickname string `json:"nickname"`
EmailAddress string `json:"email_address"`
PhoneNumber string `json:"-"`
MailingAddress string `json:"-"`
}
Và đôi khi tôi muốn sắp xếp như thế này:
type MyStruct struct {
Nickname string `json:"nickname"`
EmailAddress string `json:"email_address"`
PhoneNumber string `json:"phone_number"`
MailingAddress string `json:"mailing_address"`
}
Có một cách đơn giản để làm điều này mà không cần:
- Tạo 2 cấu trúc riêng biệt.
- Viết trình chỉnh sửa tùy chỉnh.
- Tạm thời xóa các giá trị chuỗi cho PhoneNumber và MailingAddress (với bỏ qua trên thẻ), marshaling và sau đó thêm lại chúng.
Nếu chỉ có một cách để:
- Xác định 2 bộ thẻ và nói với marshaler nào để sử dụng.
- Tự động thay đổi thẻ khi chạy.
Điều này đơn giản hơn nhiều so với tôi tưởng tượng. Tôi đã kết thúc bằng cách sử dụng một sự kết hợp của phương pháp này và một trong những mô tả ở đây: http://attilaolah.eu/2014/09/10/json-and-struct-composition-in-go/ –
Dưới đây là một số liên kết để tham khảo: Loại Marshaler http://golang.org/pkg/encoding/json/#Marshaler. Bài viết trên blog: http://blog.golang.org/json-and-go –
Nguyên tắc tương tự sẽ áp dụng cho unmarshalling - http://golang.org/pkg/encoding/json/#Unmarshaler –