У меня есть-структура, как это -Golang BSON Структура - использовать несколько имен полей для одного поля в формате JSON, но только один для записи в базу данных
type Address struct {
AddressLine1 string `json:"addressLine1" bson:"addressLine1"`
AddressLine2 string `json:"addressLine2" bson:"addressLine2"`
Landmark string `json:"landmark" bson:"landmark"`
Zipcode string `json:"zipcode" bson:"zipcode"`
City string `json:"city" bson:"city"`
}
Из-за некоторые проблемы с совместимостью между предыдущей сборкой и последнюю, но не выпущенную сборку, я хочу убедиться, что если кто-то отправит данные json, которые декодируют с помощью этой структуры, они должны иметь возможность использовать либо «zipcode», либо «pincode» в качестве имени поля в своем json. Но когда это значение записывается в мою базу данных, имя поля должно быть только «zipcode».
Короче говоря,
{
"city": "Mumbai",
"zipcode": "400001"
}
или
{
"city": "Mumbai",
"pincode": "400001"
}
оба должны появляться в базе данных, как -
{
"city": "Mumbai",
"zipcode": "400001"
}
Как разрешить это?
Вы правы. Но если данные сообщения содержат «pincode», я все равно хочу, чтобы конечное имя поля в db было «zipcode». –
Да, похоже, это путь! Btw, даже если мы не используем * string и не используем omitempty, поле будет проигнорировано правильно. Если мы не Маршал или Унмаршал, в этом случае он будет существовать, но будет пустым. Правильно ли я понимаю? Спасибо за ваше время, чтобы ответить в любом случае! –
Я попробовал и получил ошибку - Дублированный ключ «zipcode» в утилите struct.Address Любые идеи, что пойдет не так? –