type Struct struct {
Value string `json:"value"`
Value1 string `json:"value_one"`
Nest Nested `json:"nest"`
}
type Nested struct {
Something string `json:"something"`
}
Tôi muốn thêm các phần tử không có trong định nghĩa cấu trúc mà không tạo kiểu cấu trúc khác. Ví dụGolang sửa đổi json mà không cần cấu trúc
Struct.Extra1 = Nested{"yy"}
Struct.Nested.Extra2 = "zz"
Mà sẽ dẫn
{
"Value": "xx",
"Value1": "xx",
"Extra1": {
"Something", "yy"
},
"Nest": {
"Something": "xx",
"Extra2": "zz"
}
}
SOLUTION1: Tôi nghĩ thêm omitempty
để đạt được điều này nhưng nó làm cho các cấu trúc phức tạp.
type Struct struct {
Value string
Value1 string
Nest Nested
Extra1 Nested `json:"omitempty"`
}
type Nested struct {
Something string
Extra2 string `json:"omitempty"`
}
Solution2:
myextras := make(map[string]interface{})
// get Struct.Nested in map[string]interface{} format
myextras = Struct.Nest
myextras["Extra2"] = "zz"
// get Struct in map[string]interface{} format
struct["Nest"] = myextras
struct["Extra1"] = Nested{"yy"}
// solves the problem with lots of type casting but doesn't support json tag naming
Có một giải pháp tốt hơn để thêm các yếu tố lồng nhau mà không được đại diện trong struct datatype với sự hỗ trợ json-tag và có thể được sử dụng để đầu ra cho người sử dụng.
Kể từ khi chỉnh sửa hoàn toàn hợp lệ của tôi đã bị từ chối bởi các mods như "nên là một bình luận "(mặc dù đây là một sự lãng phí rất lớn của không gian như một bình luận) - lưu ý rằng bạn không cần' json: "-" 'để ngăn chặn thêm từ serializing, vì nó không được xuất khẩu. –
Cảm ơn @NateFinch vì thông tin, có ý nghĩa. Tôi đang chỉnh sửa nó thay cho bạn. –