type Struct struct {
Value string `json:"value"`
Value1 string `json:"value_one"`
Nest Nested `json:"nest"`
}
type Nested struct {
Something string `json:"something"`
}
Chcę dodać elementy, które nie są w definicjach structs bez tworzenia innego typu struct. Na przykładGolang modyfikować json bez struktury
Struct.Extra1 = Nested{"yy"}
Struct.Nested.Extra2 = "zz"
co spowoduje
{
"Value": "xx",
"Value1": "xx",
"Extra1": {
"Something", "yy"
},
"Nest": {
"Something": "xx",
"Extra2": "zz"
}
}
Porada1: myślałem dodawania omitempty
do osiągnięcia tego celu, ale to sprawia, że kompleks elemencie.
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
Czy istnieje lepsze rozwiązanie, aby dodać elementy zagnieżdżone, które nie są reprezentowane w struct typu danych ze wsparciem json-tag i mogą być wykorzystane do produkcji do użytkownika.
Ponieważ mój całkowicie poprawny edycja została odrzucona przez modów jak „powinien być komentarzem "(mimo że jest to ogromne marnowanie miejsca jako komentarz) - zauważ, że nie potrzebujesz' json: "-" ', aby zapobiec dodatkowemu serializowaniu, ponieważ nie jest on eksportowany. –
Dzięki @NateFinch dla informacji, ma sens. Edytuję to w imieniu Ciebie. –